java - 访问传递给 jasper 记录的唯一 Java bean

标签 java jasper-reports

我需要使用JasperReports创建一个PDF文件。问题是它必须仅采用一个 Java bean 作为参数(不是列表或数组),并且报告具有无法以表或列表或其他形式表示的自定义布局。如果我执行以下代码,当 jrxml 只有布局而没有参数打印时 - PDF 显示正常。这就是我尝试传递参数的方式:

Map<String, Object> map = new HashMap<String, Object>();
url = getClass().getClassLoader().getResource("/WEB-INF/reports/reg.jrxml");
jasperReport = JasperCompileManager.compileReport(url.getPath());
map.put("PARAM_NAME", myBean);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, 
    map, new JREmptyDataSource());
JasperExportManager.exportReportToPdfStream(jasperPrint, responseOutputStream);

问题是,我应该如何配置我的 jrxml 文件,以便我可以访问 myBean 的字段,以便我可以填写文本字段?我尝试过添加

<parameter name="PARAM_NAME" class="net.sf.jasperreports.engine.JRDataSource"/>

到 jrxml 文件,但我仍然无法访问它的字段。比如说,myBean 有一个相应的字段 uidgetUid(),我需要在某个地方打印它。

最佳答案

不知道为什么我从一开始就不能做到这一点...将部分 Java 代码更改为:

List<IBClientBean> data = new ArrayList<MyBean>();
data.add(myBean);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, 
    new HashMap<String, Object>(), new JRBeanCollectionDataSource(data));

并在属性声明之后手动添加到 jrxml 文件的开头(而不是我尝试在问题中添加的内容):

<field name="uid" class="java.lang.String"/>

对于 MyBean 中的所有必填字段,依此类推。然后,我只需在文本字段中输入 $F{uid} 即可将 uid 打印为 pdf。

关于java - 访问传递给 jasper 记录的唯一 Java bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21432871/

相关文章:

java - 无法读取数据库 - NullPointerException

java - Gson抛出异常 "Expected BEGIN_OBJECT but was BEGIN_ARRAY"

java - 下载文件而不将文件存储在服务器上?如何在不将文件存储在服务器上的情况下向客户端提供文件下载功能?

jasper-reports - 在JasperReports中无法正确呈现PAGE_COUNT ...?

java - 如何在 Jasper Reports 中制作使用 Web 服务作为数据源的子报表

java - 将属性文件值与数据库中的数据耦合是一种反模式吗?

java - Jackson 和 Jersey 的条件属性序列化

java - 当负数包含括号时,如何使字符串值总和为 Big.Decimal?

eclipse - 如何在 Jaspersoft Studio Eclipse 插件中设置区域设置

java - Hibernate 代理对象包含什么?