使用iReport,我有一个文本字段,其中包含以下“表达式时打印”:
new Boolean($F{data}.doubleValue()<3 && $V{check}.intValue()==0);
我的问题是我只想将此文本字段打印一次。为此,我认为我可以使用变量(check
)。
我尝试将以下表达式用于变量:
($F{data}.doubleValue()<3) ? 1 : 0
问题在于,在文本字段检查其“打印条件”之前会调用变量的表达式,因此永远不会打印该文本字段。
在文本字段“打印条件”返回true之后,如何实现设置变量值?
我要标记小于参考值的第一个值
我经常使用参数映射(P{REPORT_PARAMETERS_MAP}
)来存储和评估自定义表达式,具体取决于先前的值和输出
示例(true
如果返回值$F{X}<100
并且从未低于此值,则返回)
<printWhenExpression>
<![CDATA[$F{X}.doubleValue()<100?$P{REPORT_PARAMETERS_MAP}.put("X_LESS_100",true)==null?true:false:false]]>
</printWhenExpression>
该表达式利用了Map.put(K,V)返回与key关联的先前值的事实,即null
如果从未调用,则第二次$F{X}
低于100时它将返回我们先前的设定值true
。
注意:您不需要定义任何变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句