- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 getServletContext().getRealPath( "/") ,但我不断收到此错误:
找不到符号符号:方法 getServletContext()位置:接口(interface) javax.servlet.http.HttpSession String path = session.getServletContext().getRealPath("/") + "layout/tiles/"+ reportPath ;
public ModelAndView handleRequest( HttpServletRequest request, HttpServletResponse response ) throws Exception {
session = request.getSession();
Map params = new HashMap();
String reportPath = "maintenance/jasper/report01.jasper";
exportToPDF( reportPath , response, params );
return null;
}
protected void exportToPDF( String reportPath , HttpServletResponse response, Map jasperParams ) throws Exception {
String path = session.getServletContext().getRealPath( "/" ) + "layout/tiles/" + reportPath ;
if ( !new File( path ).exists() ) {
throw new Exception( "The path doesn''t exist. </br>" + path );
}
InputStream input = new FileInputStream( path );
jasperParams.put( "REPORT_LOCALE", Locale.US );
JasperPrint jasper = JasperFillManager.fillReport( input , jasperParams, new JRBeanCollectionDataSource(Vehicles) );
response.setContentType( "application/pdf" );
ServletOutputStream output = response.getOutputStream();
JRExporter exporter = new JRPdfExporter();
exporter.setParameter( JRExporterParameter.JASPER_PRINT, jasper );
exporter.setParameter( JRExporterParameter.OUTPUT_STREAM, output );
exporter.exportReport();
output.close();
}
你知道为什么会这样吗?
谢谢 Ritesh,我按照你说的做了,但现在我收到一条新消息
--------编辑--------
检查我的 dispatcher-servlet.xml,我发现它与此 web 上显示的代码有点不同。 .我不知道它会如何影响我的项目,但我想知道是否有不同的方法来获得与使用 session.getServletContext().getRealPath( "/") 相同的结果
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles.xml</value>
</list>
</property>
</bean>
最佳答案
getServletContext()
是在 Servlet 2.3 中添加的。它在 2.2 中不存在,请参阅 Servlet 2.2 javadoc
所以唯一的解释是您的项目正在根据旧版本验证代码。
getServletContext()
也在您似乎正在使用的 Spring 的 Controller 类中。因此,不用 session.getServletContext().getRealPath( "/")
,您只需使用 getServletContext().getRealPath( "/")
1 月 30 日编辑:Jasper 报告 jar 文件清理
我已验证 jasperreports-3.7.1-project.zip 具有旧版本的 servlet.jar。我建议如下:
从 jasperreports-3.7.1-project.zip 的 lib 文件夹中删除您添加的所有 jar 文件,但保留“dist”文件夹中的 jar 文件。
根据编译错误信息,逐一添加jar文件。请不要添加任何在 TOMCAT-HOME/lib 文件夹中也可用的 jar 文件,也不要添加任何 Spring jar 文件。既然你知道 jasper 报告项目有旧的 jar 文件,首先看看 netbeans 是否提供这些 jar,如果没有然后尝试使用来自其他存储库的最新版本,例如 http://repo1.maven.org/maven2/ . Spring framework download with dependencies也有几个常用的文件可以使用。
检查任何在线资源以获取有关所需 jar 文件的更多信息。以下链接描述了在 netbeans 中与 jasper 报告版本 1.2.5 的集成:http://developers.sun.com/jsenterprise/archive/reference/techart/jse8/jasper_reports.html但是你需要像 3.7.1 版本相关的东西。
关于java - 为什么找不到 getservletcontext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4840569/
我正在尝试在 Windows 上运行的小于 1GB 的 VM 上设置 YouTrack 和 TeamCity。使用率将非常低(用户和请求)。这是一个 POC 环境,如果它有效,我可能会将它推送到一个超
所以我在尝试使用 FORFILES 解决这个问题时遇到了麻烦。我正在尝试获取不超过 4 天的文件。所以基本上少于 4 天。然而,这似乎不太可能,因为/d -4 获取所有 4 天或更早的项目。 以下是我
如何从下面的 events 表中选择小于 15 分钟前创建的 events? CREATE TABLE events ( created_at timestamp NOT NULL DEFAU
Google Analytics Realtime提供 rt:minutesAgo ,可以过滤查询。 然而,它是一个维度而不是一个度量标准,<=不能在过滤器中使用。 假设我想在最后 n 分钟内获得一些
iOS 核心数据 - 严重的应用程序错误 - 尝试插入 nil 你好, 我的应用程序实际上运行稳定,但在极少数情况下它会崩溃并显示此错误消息... 2019-04-02 20:48:52.437172
我想制作一个 html div 以快速向右移动(例如不到 1 秒)并消失。然后1秒后再次直接出现在这个过程最开始div的位置。此过程将由单击按钮并重复 10 次触发。 我试图在 CSS 中使用过渡属性
我发现使用 TimeTrigger 是 Windows 10 (UWP) 上计划后台任务的方式。但是看起来我们需要给出的最小数字是 15 分钟。只是想知道,即使我们安排它在接下来的 1 分钟内运行,警
我必须在 1 秒内在屏幕上打印 2^20 行整数 printf 不够快,还有其他易于使用的快速输出替代方法吗? 每一行只包含 1 个整数。 我要求它用于竞争性编程问题,我必须将其源代码提交给法官。 最
我是一名优秀的程序员,十分优秀!