Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有xml配置的情况下使用JasperReportsPdfView_Java_Spring_Jasper Reports - Fatal编程技术网

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

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

我希望有一个控制器方法从JasperReports jrxml文件返回PDF,而不使用任何xml配置

我想使用一个
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已经给出了类