加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在没有xml配置的情况下使用JasperReportsPdfView

发布时间:2020-12-16 23:00:48 所属栏目:百科 来源:网络整理
导读:我想有一个控制器方法从JasperReports jrxml文件返回PDF,而不使用任何xml配置. 我想使用JasperReportsPdfView.这有可能吗?我知道只能在这个博客中使用Java代码来完成它: http://krams915.blogspot.com/2010/12/spring-3-mvc-jasper-integration_22.html 但
我想有一个控制器方法从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",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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读