如何获取复杂JavaBean的值
我有一个.jrxml文件,我想将一些参数从代码传递给它。我有一个如何获取复杂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。未找到字段:产品 您知道如何解决这
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()));