2008-11-17 23 views

Respuesta

18

¿Tiene un error relativo a booleano?

Porque necesita usar Boolean en lugar del tipo primitivo.

Así:

$F{mesure} != "PH" 
($F{userfd4}).equals("1") ? true : false 

daría cannot cast from boolean to Boolean.

($F{mesure}.startsWith("PH") ? Boolean.TRUE:Boolean.FALSE) 
($F{userfd4}).equals("1") ? Boolean.TRUE : Boolean.FALSE 

sería correcto.

Véase también este example


Actualización Nov 2015 (7 años más tarde)

Petter Friberg puntos fuera in the comments:

En jasper report 6.0 esto no se necesita:
Puede devuelva boolean o Boolean una expresión simple l ike $F{fieldName}.equals("hello") funcionará.

+0

En el informe de jasper 6.0 esto no es necesario, puede devolver tanto booleano como booleano una expresión simple como $ F {fieldName} .equals ("hello") funcionará. –

+0

@PetterFriberg Gracias por este comentario. He incluido su comentario en la respuesta para una mayor visibilidad. – VonC

+0

¿Es posible obtener el elemento actual es printWhenExpression? – zygimantus

4

El otro póster ha explicado bien los detalles técnicos de cómo usarlo, así que intentaré explicar las circunstancias en las que podría resultarle útil.

Básicamente, le permite mostrar u ocultar el contenido de una celda en función de una expresión booleana. Por ejemplo, es posible que desee mostrar el nombre de una persona sólo si esa persona es mayor de 18 años, a continuación, en el campo de nombre, usando un printwhenexpression como:

$F{age} >= 18 
2

También puede utilizar el método estático "Boolean.valueOf (booleano segundo)". Tiene exactamente la misma lógica que "($ F {mesure} .startsWith (" PH ")? Boolean.TRUE: Boolean.FALSE)" y la buena regla general es no recrear la rueda.

Boolean.valueOf ($ {F} mesure .startsWith ("PH"))

Boolean.valueOf ($ {F}). Userfd4 iguales ("1"))

1

$ P {mesure} .equals ("200") debería funcionar sin ningún detalle adicional. Se imprimirá si la condición es verdadera

Cuestiones relacionadas