有人可以告诉我如何使用JasperReports的 printWhenExpression
吗?
答案 0 :(得分:21)
你有关于布尔值的错误吗?
因为你需要使用布尔而不是基本类型。
所以:
$F{mesure} != "PH"
($F{userfd4}).equals("1") ? true : false
会给cannot cast from boolean to Boolean
。
( $F{mesure}.startsWith("PH") ? Boolean.TRUE:Boolean.FALSE )
($F{userfd4}).equals("1") ? Boolean.TRUE : Boolean.FALSE
是正确的。
另见example
2015年11月更新(7年后)
Petter Friberg指出in the comments:
在jasper report 6.0中,这不是必需的:
您可以返回boolean
或Boolean
这样的简单表达式,例如$F{fieldName}.equals("hello")
。
答案 1 :(得分:4)
另一张海报在解释如何使用它的技术细节方面做得很好,所以我会试着解释一下可能会发现它有用的情况。
基本上,它允许您根据布尔表达式显示或隐藏单元格的内容。例如,您可能希望仅在该人超过18时显示某个人的姓名,然后在名称字段中使用printwhenexpression显示:
$F{age} >= 18
答案 2 :(得分:2)
您还可以使用静态方法“Boolean.valueOf(boolean b)”。它与“($ F {mesure} .startsWith(”PH“)具有完全相同的逻辑?Boolean.TRUE:Boolean.FALSE)”并且良好的经验法则是不重新创建轮子。
通过Boolean.valueOf($ F {} MESURE .startsWith( “PH”))
通过Boolean.valueOf($ F {userfd4})。等于( “1”))
答案 3 :(得分:1)
$ P {mesure} .equals(“200”)应该没有任何其他细节。如果条件为真,它将打印