Struts2整合JasperReport输出HTML显示图片问题
我用的是struts2.0.11,iReport3.6.7
struts2整合JasperReport参考:http://www.blogjava.net/sterning/archive/2008/01/02/172317.html
按照一下方法解决我没有成功:(在浏览器上显示有很多红色XX)
1.web.xml配置
<servlet>
<servlet-name>JasperReportImageServlet</servlet-name>
<servlet-class>
net.sf.jasperreports.j2ee.servlets.ImageServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JasperReportImageServlet</servlet-name>
<url-pattern>/image</url-pattern>
</servlet-mapping>
2.配置成struts.action.extends=action
3.在WebRoot建立一个images文件夹,放入px文件
若要显示自己在报表中定义的图片,再加上红色部分
<action name="HTMLReport" class="reportAction">
<result type="jasper">
<param name="location">/jasper/report.jasper</param>
<param name="format">HTML</param>
<param name="reportParameters">map</param>
<param name="dataSource">funList</param>
<param name="imageServletUrl"><![CDATA[/image?image=]]></param>
</result>
</action>
用重写JasperReportsResult.java中的doExcute()方法
@SuppressWarnings({ "unchecked", "deprecation" })
protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception {
if (this.format == null) {
this.format = FORMAT_PDF;
}
if (dataSource == null) {
String message = "No dataSource specified...";
LOG.error(message);
throw new RuntimeException(message);
}
if (LOG.isDebugEnabled()) {
LOG.debug("Creating JasperReport for dataSource = " + dataSource + ", format = " + this.format);
}
HttpServletRequest request = (HttpServletRequest) invocation.getInvocationContext().get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse) invocation.getInvocationContext().get(ServletActionContext.HTTP_RESPONSE);
//construct the data source for the report
ValueStack stack = invocation.getStack();
ValueStackDataSource stackDataSource = new ValueStackDataSource(stack, dataSource);
format = conditionalParse(format, invocation);
dataSource = conditionalParse(dataSource, invocation);
if (contentDisposition != null) {
contentDisposition = conditionalParse(contentDisposition, invocation);
}
&nb