如何获得复杂JavaBean的价值
我有一个.jrxml文件,我想从代码中传递一些参数。 我有一个Orde
r类,其中包含double price
, int quantity
和Product product
等字段。 情况很简单,当我需要通过价格或数量时,我只是这样做:
当我尝试传递product.getName()
时出现问题。 我试过类似的东西:
还有很多其他但我不断收到错误: net.sf.jasperreports.engine.design.JRValidationException: Report design not valid : 1. Field not found : product
你知道如何解决这个问题吗?
例如,您有一对JavaBeans(POJO):
public class Order { private double price; private int quantity; private Product product; // public getters } public class Product { private String name; // public getters }
你以这样的方式声明报告的数据源:( 是的,我喜欢番石榴 )
JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(Lists.newArrayList(ImmutableList.builder() .add(new Order(1000.2, 10, new Product("Phone"))) .add(new Order(10200.0, 2, new Product("Tv"))) .build()));
如果使用此字段声明:
你可以使用这样的表达式:
注意:
- 不要忘记,吸气剂应该是公开的
- 更多信息: JavaBean数据源
- 有关样本的_THIS的良好解释可以在这篇文章中找到:
- 如何在jasperreports中访问数据源的根元素
- 将基本类型对象列表作为子报表的数据源传递
- 如何在iReport中打印另一个列表中包含的字符串列表?