如何获取复杂JavaBean的值

如何获取复杂JavaBean的值,java,jasper-reports,javabeans,Java,Jasper Reports,Javabeans,我有一个.jrxml文件,我想将一些参数从代码传递给它。我有一个Order类,它有double price、int quantity和Product等字段。情况很简单,当我需要传递价格或数量时,我只做如下操作: 当我尝试传递product.getName()时,问题出现了。我试过这样的方法: 还有许多其他问题,但我不断遇到错误:net.sf.jasperreports.engine.design.jrvalidateException:报表设计无效:1。未找到字段:产品 您知道如何解决这

我有一个.jrxml文件,我想将一些参数从代码传递给它。我有一个
Orde
r类,它有
double price
int quantity
Product
等字段。情况很简单,当我需要传递价格或数量时,我只做如下操作:


当我尝试传递
product.getName()
时,问题出现了。我试过这样的方法:


还有许多其他问题,但我不断遇到错误:
net.sf.jasperreports.engine.design.jrvalidateException:报表设计无效:1。未找到字段:产品


您知道如何解决这个问题吗?

例如,您有一对JavaBeans(POJO):

公共类秩序{
私人双价;
私人整数数量;
私人产品;
//公众人物
}
公共类产品{
私有字符串名称;
//公众人物
}
您可以这样声明报表的数据源:(是的,我喜欢番石榴)

JRBeanCollectionDataSource=newjrbeancollectiondatasource(Lists.newArrayList(ImmutableList.builder)()
添加(新订单(1000.2、10、新产品(“电话”))
.添加(新订单(10200.0,2,新产品(“Tv”))
.build());
如果使用此字段声明:


您可以使用以下表达式:



注意:

  • 不要忘记getter应该是公开的
  • 更多信息:
  • 在以下帖子中可以找到关于使用示例的很好的解释:
见:
JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(Lists.newArrayList(ImmutableList.<Order>builder()
        .add(new Order(1000.2, 10, new Product("Phone")))
        .add(new Order(10200.0, 2, new Product("Tv")))
        .build()));