我有以下课程:
public class ReportDto {
private String name;
private Map<String, CustomClass> map1;
}
我将其传递给我的 Jasper 报告:
JRDataSource dataSource = new JRBeanCollectionDataSource(Collections.singletonList(reportDto));
在我的 JRXML 文件中:
<field name="name" class="java.lang.String"/>
<field name="map1" class="java.util.Map"/>
<textField pattern="#,##0.00">
<reportElement .. />
<textElement .. />
<textFieldExpression><![CDATA[$F{map1}.get("key").getClassFieldValue()]]></textFieldExpression>
</textField>
如何从 map1
as a CustomClass
检索值以访问 .getClassFieldValue()
,而不将 $F{map1}.get("key")
转换为 ReportDto?
您可以通过在 JRXML 中将该字段声明为 CustomClass 来完成此操作。确保数据源为地图提供正确类型的值。
<field name="map1" class="java.util.Map<java.lang.String, com.yourtype.CustomClass>"/>