我想有一个控制器方法从JasperReports jrxml文件返回PDF,而不使用任何xml配置.
我想使用JasperReportsPdfView.这有可能吗?我知道只能在这个博客中使用Java代码来完成它:
http://krams915.blogspot.com/2010/12/spring-3-mvc-jasper-integration_22.html
但我相信一定可以用更少的代码:-)
这里有一些不幸的例子代码.
@RequestMapping(value = "/test/pdfreport", method = RequestMethod.GET, produces = "application/pdf")
public JasperReportsPdfView getPdf() {
// does not work like this, unfortunately
final Person p = userService.getUserById("the id");
final JasperReportsPdfView view = new JasperReportsPdfView();
view.setReportDataKey("person");
view.addStaticAttribute("person", p); // ??
view.setUrl("report.jrxml");
return view;
}
谢谢你的指针.
编辑:这是我的工作解决方案:
@Autowired
private ApplicationContext appContext;
@RequestMapping(value = "/test/pdfreport", method = RequestMethod.GET, produces = "application/pdf")
public ModelAndView getPdf() {
final List<Map<String, Object>> users = userService.getUsers();
final JasperReportsPdfView view = new JasperReportsPdfView();
view.setReportDataKey("users");
view.setUrl("classpath:report.jrxml");
view.setApplicationContext(appContext);
final Map<String, Object> params = new HashMap<>();
params.put("users", users);
return new ModelAndView(view, params);
}
将spring-context-support包包含在项目中非常重要.
解决方法:
这对我有用:
@Autowired private ApplicationContext appContext;
@Autowired private DataSource dataSource;
@RequestMapping(value = "/pdf", method = RequestMethod.GET)
public ModelAndView getPdf() {
JasperReportsPdfView view = new JasperReportsPdfView();
view.setJdbcDataSource(dataSource);
view.setUrl("classpath:report.jrxml");
Map<String, Object> params = new HashMap<>();
params.put("param1", "param1 value");
view.setApplicationContext(appContext);
return new ModelAndView(view, params);
}
标签:java,spring,jasper-reports 来源: https://codeday.me/bug/20190612/1226379.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。