如何在JasperReports中使用printWhenExpression

时间:2008-11-17 06:10:27

标签: jasper-reports

有人可以告诉我如何使用JasperReports的 printWhenExpression 吗?

4 个答案:

答案 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中,这不是必需的:
  您可以返回booleanBoolean这样的简单表达式,例如$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”)应该没有任何其他细节。如果条件为真,它将打印