我必须使用 JasperReports ,但我正在努力将数据输出。
这是我的Java边声明:
Map<String, List<TransactionBean>> shCredits = new HashMap<String, List<TransactionBean>>();
在声明的 HashMap 中,我存储了具有事务的客户端。
我将此 HashMap 传递给报告,以便客户列出交易组。
这是 JR 方面:
<parameter name="shareHolderCreditBeans" class="java.util.HashMap">
<defaultValueExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}.get("shCreditBeans")]]></defaultValueExpression>
</parameter>
<parameter name="credits" class="java.util.List">
<defaultValueExpression><![CDATA[$P{shareHolderCreditBeans}.get("12")]]></defaultValueExpression>
</parameter>
...
<field name="clientId" class="java.lang.String">
<fieldDescription><![CDATA[clientId]]></fieldDescription>
</field>
我的问题是,如果我在'credits'参数中使用硬编码密钥(“12”),我可以获得客户端事务列表。我也可以在 textField 中使用 clientId 字段,但不能像以下那样使用
$P{shareHolderCreditBeans}.get($F{clientId})
如果我这样做,则返回null。
使用字段作为参数键是否是正确的方法?
如果我对描述此问题不够清楚,请告诉我
答案 0 :(得分:0)
最后,我可以通过投射解决它:
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource((java.util.List)($P{shareHolderCreditBeans}.get($F{clientId})))]]></dataSourceExpression>