我想要一个控制器方法从 JasperReports jrxml 文件返回 PDF,而不使用任何 xml 配置。
我想用一个JasperReportsPdfView
。这有可能吗?我知道这可以只用 Java 代码来完成,就像这个博客中一样:
http://krams915.blogspot.com/2010/12/spring-3-mvc-jasper-integration_22.html http://krams915.blogspot.com/2010/12/spring-3-mvc-jasper-integration_22.html
但我相信用更少的代码就可以实现:-)
这里有一些示例代码not不幸的是工作。
@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;
}
感谢您的指点。
Edit:这是我的工作解决方案:
@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
打包到您的项目中。