在我的JasperPrint报告中,我有一组Customer
:$P{customers}
客户看起来像这样:
class Customer {
private String name;
private Date birthDate;
// constructor, getters and setters ...
}
在我的报告的文本字段中,我想显示孩子的数量(不到18岁)。我试过跟随文本字段表达式:
java.util.Arrays.stream($P{customers})
.filter(customer -> ((java.lang.System.currentTimeMillis() - customer.getBirthDate().getTime()) / (float) (1000 * 60 * 60 * 24 * 365)) < 18)
.count()
但是不支持Java 8 Streams,我的公司不允许启用它。当用Java编译报告时,我得到以下异常:
net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
...\Reports\temp\ReservationConfirmation_1510745430519_703593.java:696: error: illegal start of expression
.filter(customer -> ((java.lang.System.currentTimeMillis() ... //$JR_EXPR_ID=91$
^
所以我的问题是:我如何在报告中实施这样的计数?是否有可能在变量表达式中实现它?