在参数DefaultValueExpression中使用字段值

时间:2013-10-03 17:03:58

标签: java jasper-reports

我必须使用 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。

使用字段作为参数键是否是正确的方法?

如果我对描述此问题不够清楚,请告诉我

1 个答案:

答案 0 :(得分:0)

最后,我可以通过投射解决它:

<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource((java.util.List)($P{shareHolderCreditBeans}.get($F{clientId})))]]></dataSourceExpression>