如何获得复杂JavaBean的价值

我有一个.jrxml文件,我想从代码中传递一些参数。 我有一个Orde r类,其中包含double priceint quantityProduct 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的良好解释可以在这篇文章中找到:
    1. 如何在jasperreports中访问数据源的根元素
    2. 将基本类型对象列表作为子报表的数据源传递
    3. 如何在iReport中打印另一个列表中包含的字符串列表?