Java 如何在没有xml配置的情况下使用JasperReportsPdfView
我希望有一个控制器方法从JasperReports jrxml文件返回PDF,而不使用任何xml配置 我想使用一个Java 如何在没有xml配置的情况下使用JasperReportsPdfView,java,spring,jasper-reports,Java,Spring,Jasper Reports,我希望有一个控制器方法从JasperReports jrxml文件返回PDF,而不使用任何xml配置 我想使用一个JasperReportsPdfView。这可能吗?我知道这只需要Java代码就可以完成,就像在这个博客中: 但我相信,用更少的代码一定是可能的:-) 不幸的是,这里有一些不起作用的示例代码 @RequestMapping(value = "/test/pdfreport", method = RequestMethod.GET, produces = "application/p
JasperReportsPdfView
。这可能吗?我知道这只需要Java代码就可以完成,就像在这个博客中:
但我相信,用更少的代码一定是可能的:-)
不幸的是,这里有一些不起作用的示例代码
@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);
}
@Autowired
私有应用上下文appContext;
@RequestMapping(value=“/test/pdfreport”,method=RequestMethod.GET,products=“application/pdf”)
公共模型和视图getPdf(){
最终列表用户=userService.getUsers();
最终JasperReportsPdfView视图=新JasperReportsPdfView();
view.setReportDataKey(“用户”);
setUrl(“classpath:report.jrxml”);
view.setApplicationContext(appContext);
final Map params=new HashMap();
参数put(“用户”,用户);
返回新模型和视图(视图,参数);
}
将spring上下文支持
包包含到您的项目中非常重要。这对我很有用:
@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);
}
@Autowired private ApplicationContext-appContext;
@自连线专用数据源;
@RequestMapping(value=“/pdf”,method=RequestMethod.GET)
公共模型和视图getPdf(){
JasperReportsPdfView视图=新建JasperReportsPdfView();
view.setJdbcDataSource(dataSource);
setUrl(“classpath:report.jrxml”);
Map params=新的HashMap();
参数put(“参数1”、“参数1值”);
view.setApplicationContext(appContext);
返回新模型和视图(视图,参数);
}
谢谢您的评论。我会试试看,然后告诉你我的结果。看起来我少了一个罐子。。。我在Spring4.0中找不到它。缺少的类是:org/springframework/ui/jasperreports/JasperReportsUtils是否您的代码示例基于较旧版本的Spring?我正在使用4.0.3版本的Spring。。。spring-context-support-4.0.3.RELEASE已经给出了类