我正在为struts2 使用jasperreports-plugin。
我已经使用 iReport 创建了一些报告。当我以 HTML 以外的任何格式导出报告时,报告会正确生成。但是当我尝试以 HTML 格式导出它时,浏览器找不到任何图像。
对于没有图表的报告,这不是一个大问题,其中缺少“px”图像。由于它是静态图像,因此不是什么大问题,我找到了一个快速的解决方法,也许稍后我会尝试强制导出参数不使用图像来填充空间。
我真正的问题是当我尝试生成包含图表的报告时。浏览器找不到任何生成的图像。
我想知道出了什么问题,或者至少想知道生成的图像是否以及存储在临时文件夹中的位置。
这是我的 struts.xml 中的动作定义:
<package name="jasperreport" namespace="/reports" extends="jasperreports-default">
<action name="myJasperTest" class="[...]JasperReportAction" method="getTestReport">
<result name="success" type="jasper" >
<param name="location">/WEB-INF/jasper/${outFile}</param>
<param name="connection">sqlConnection</param>
<param name="reportParameters">reportParams</param>
<param name="format">${format}</param>
</result>
</action>
</package>
还有我的动作 JasperReportAction.java:
public class JasperReportAction extends ActionSupport {
//various initialization..getter, setters..
public String getTestReport() {
try {
JasperCompileManager.compileReportToFile(sourceFile, outFile);
//test to see a generated file
JasperReport report = JasperCompileManager.compileReport(sourceFile);
JasperPrint print = JasperFillManager.fillReport(report, new HashMap<String, Object>(), sqlConnection);
JasperExportManager.exportReportToHtmlFile(print, "/home/user/output.html");
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
return SUCCESS;
}
}
我还在我的 struts.xml 中添加了一个操作,以避免在生成的报告请求像“/images/px”这样的图像的 url 时没有找到操作异常:
<package name="px" namespace="/images" extends="struts-default">
<action name="*">
<result>/images/{1}</result>
</action>
</package>
至少有了这个我得到一个“404 - 未找到”而不是一个动作未找到异常。JasperReportAction 类中的最后一行代码创建了一个 HTML 文件,其中包含与生成的图表相关联的文件夹,并且所有内容都按应有的方式显示。
我希望有人能告诉我在哪里可以找到生成的图表,或者我是否可以为它们指定名称。任何帮助,将不胜感激 :)
提前致谢