【发布时间】:2019-02-19 03:33:31
【问题描述】:
有人要求我在 Jasper 中修改带有 XML 数据源的模板,以使用 Java 程序中的动态列。因此,我将所有应该在 PDF 中显示的列收集在一个列表中,然后应该在 PDF 中作为表格的列打印出来。由于我是 Jasper 的初学者并且在子报表中遇到了我的列表为空的问题,我认为首先在主报表中显示列表的元素并从那里继续可能会更容易。
但是,即使在主报告中,列表似乎也始终为空,我尝试了各种不同的方法来尝试打印列表的内容。我首先检查了列表的实际内容不为空,并且可以在生成的 XML 中进行验证。然后在 Jasper 中,我尝试在主报告中创建一个列表字段,指向我的 java 程序中的变量(对于其他变量,例如字符串,它工作得很好)。使该字段仅访问列表中的一个字段,或打印出整个列表都会导致在生成的 PDF 中打印空值。
所以在 Jasper 中将 XML 作为数据源处理时,我似乎误解了如何引用/访问列表。
这是列表在 XML 中的样子:
<kunde>102591</kunde>
<company>Sony</company>
<currentDate>16.02.2019</currentDate>
<columns>
<string>id</string>
<string>type</string>
<string>name</string>
<string>area</string>
<string>salary</string>
</columns>
我是否需要以不同于普通字符串字段的方式引用集合字段?如果有人能解释这里的问题是什么,那将不胜感激。
【问题讨论】:
-
你可以这样引用,它不会自动转换为java.util.List,但你可以在你的columns标签上创建一个子数据源。还要注意在 jasper 报告中制作动态列非常简单,您需要使用交叉表
-
嗨,Petter,您能详细说明一下您的意思吗?我尝试在我的 Java 类中创建一个指向我的列表的子数据源,但是问题仍然存在。一旦我可以打印出我的列列表的内容,我将继续使用交叉表,但现在我遇到了打印此列表的问题。有任何想法吗?我将如何准确地创建这个子数据源?感谢您的帮助。
-
好的,我推送了一个关于如何引用该集合的答案。
标签: xml xpath collections jasper-reports