【发布时间】:2016-07-28 07:37:24
【问题描述】:
我正在用 Java 开发一个工具,可以在 JasperReports 中进行一些自动化操作(自动打印、设置参数等)。我主要使用 JasperReport 库。现在我必须使用 Java 代码设置过滤器表达式。我知道如何准备参数,我是这样做的:
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("filter", "where name like '%.'");
然后,我在生成 PDF 报告时传递了这个参数:
JasperPrint pdf = JasperFillManager.fillReport(jasperReport, parameters, connection);
如果有这么简单的修改参数的方法,我想也有类似的修改过滤器表达式的方法。我已经搜索了很长时间,但我什么也没找到。
【问题讨论】:
-
I need to add new Filter Expression to my Jasper report using Java code.- 什么意思? -
您可以手动将过滤器表达式添加到您的报告中。例如这样的:
$F{NAME}.contains( "USP") ||$F{NAME}.contains("O")。在报告源中,它看起来像这样:<filterExpression><![CDATA[$F{NAME}.contains( "USP" )|| $F{NAME}.contains("O")]]></filterExpression>我的工作是在 java 代码中设置这些条件 -
你在考虑基于 JavaBean 的数据源吗?
-
没错,我的意思是 JasperReport 库。我想如果我可以使用这个库设置参数,还有设置过滤器表达式的选项,但我不知道如何。任何方法都可以是好的,但前提是它可以自动完成(使用代码)
-
您可以过滤集合,例如在 Guava 的帮助下:Filtering a list of JavaBeans with Google Guava 或使用 Stream API:Java 8 Lambda filter by Lists
标签: java jasper-reports