【问题标题】:Accessing the only Java bean passed to jasper records访问传递给 jasper 记录的唯一 Java bean
【发布时间】:2014-01-30 22:16:42
【问题描述】:

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

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 jasper-reports


    【解决方案1】:

    不知道为什么我不能从一开始就这样做......将部分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 中的所有必填字段,依此类推。然后我可以将uid 打印为pdf,只需在文本字段中输入$F{uid}

    【讨论】:

      猜你喜欢
      • 2021-03-03
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多