0

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

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

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

4

1 回答 1

0

最后,我可以通过强制转换来解决它:

<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource((java.util.List)($P{shareHolderCreditBeans}.get($F{clientId})))]]></dataSourceExpression>
于 2013-10-04T11:33:22.600 回答