我正在使用struts2 jasperreports插件,效果很好。问题是我想传递exportParameters,我不知道如何通过插件来做到这一点。我做到了:
@Result(
name = "XLS", value = "/<package>/Informe.jasper",
type = JasperReportsResult.class,
params = {
"dataSource", "listaResultados",
"format", "XLS",
"contentDisposition", "attachment;filename=\"Informe.xls\"",
"exportParameters", "exportParametersJR"
}
)
@SuppressWarnings("unchecked")
public Map<String, String> getExportParametersJR(){
JRXlsExporter jrXlsExporter = new JRXlsExporter();
JrXlsExporter.setParameter(
JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.TRUE);
return jrXlsExporter.getParameters();
}
我试过了,我正确地得到了数据源,但是当我添加这一行时
"exportParameters", "exportParametersJR"
它告诉我这个例外:
java.lang.NullPointerException at org.apache.struts2.views.jasperreports.JasperReportsResult.doExecute(JasperReportsResult.java:229) 在 org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)at at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253) 在 org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50) 在 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504) 在 org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) 在 org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) 在 org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 在 org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) 在 org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run(ThreadPool.java:684) 在java.lang.Thread.run(未知来源)
任何人都可以帮助我吗?
答案 0 :(得分:0)
感谢Andrea Ligios发表评论的帖子(passing parameters to jaspereport),我看到我的项目使用的是不支持此功能的旧版本。
该项目使用struts2-jasperreports-plugin-2.0.11.1.jar,因此解决方案是使用iReport 3来定义属性,这样:
添加net.sf.jasperreports.export.xls.*
导入(编辑/报告导入指令/新导入)
添加net.sf.jasperreports.export.xls.one.page.per.sheet属性并在报告自定义属性中设置ir为true(编辑/自定义属性/新)