我正在尝试使用 getServletContext()。getRealPath(“/”),但我一直收到此错误:
无法找到符号 symbol:方法getServletContext() location:接口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,我做了你告诉我的事,但现在我收到了一条新消息
------ -------- EDIT
检查我的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>
答案 0 :(得分:4)
getServletContext()
。它不在2.2中,见Servlet 2.2 javadoc
因此,唯一的解释是您的项目是针对旧版本验证代码。
你似乎正在使用的是Spring的Controller类中的 getServletContext()
。因此,只需session.getServletContext().getRealPath( "/" )
getServletContext().getRealPath( "/" )
而不是{{1}}
1月30日编辑:Jasper报告jar文件清理
我已经验证jasperreports-3.7.1-project.zip有旧版本的servlet.jar。我建议遵循:
删除您从jasperreports-3.7.1-project.zip的lib文件夹中添加的所有jar文件,但保留jar文件来自“dist”文件夹。
根据编译错误消息逐个添加jar文件。请不要添加任何在TOMCAT-HOME / lib文件夹中也可用的jar文件,也不要添加任何Spring jar文件。既然你知道jasper报告项目有旧的jar文件,首先看看netbeans是否提供了这些jar,如果没有,那么尝试使用其他存储库的最新版本,例如http://repo1.maven.org/maven2/。带有依赖项的Spring框架下载还有几个可以使用的常用文件。
检查所有在线资源以获取有关所需jar文件的更多信息。以下链接描述了与netbeans中的jasper报告版本1.2.5的集成:http://developers.sun.com/jsenterprise/archive/reference/techart/jse8/jasper_reports.html但是您需要与3.7.1版本相关的内容。