我有这个对象结构,在mi jasper报告中使用像Java Bean一样,
public class Person{
private String name;
private String lastname;
private List<Job> jobs;
}
public class Job{
private String jobName;
private String companyName;
private List<Reponsability> responsabilities;
}
包含相应setters
和getters
当我在jasper报告中创建列表时,我以这种方式定义“作业列表” JRDataSource expression
:
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{jobs})
现在我想在“职位列表”上创建另一个列表“职责列表”,问题是:
如何定义数据源以将相应的作业传递到JRDataSource Expression
?
我想象这样的事情:
new JRBeanCollectionDataSource(${jobs}.get($index).getResponsabilities())
但我无法让它发挥作用
答案 0 :(得分:0)
我找到了解决方案:
在列表中,我创建了一个名为 jobInstance
的变量 <field name="jobInstance" class="com.mypackage.example.Job">
<fieldDescription><![CDATA[_THIS]]></fieldDescription>
</field>
然后,当我为职责设置数据源时,列表执行了以下操作:
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{jobInstance}.getResponsabilities())
参考文献:https://community.jaspersoft.com/questions/508346/getting-current-object