Si una propiedad de objeto se declara como de tipo Boolean (no booleana primitiva), parece que hay un problema en EL al reconocerla.No se puede leer la propiedad booleana en JSP EL
Digamos que tiene el siguiente objeto
class Case{
private Boolean valid;
public Boolean isValid(){
return this.valid;
}
public void setValid(Boolean val){
this.valid = val;
}
}
parece si ponemos un objeto del tipo de caso en la solicitud bajo el nombre de "caso", luego de que este intento en el JSP:
<td>Object is ${case.valid ? "Valid":"Invalid"} </td>
Esto me da error "válido" no es una propiedad del objeto Case! ¡Si cambio válido de booleano a booleano primitivo, funciona!
¿Es este un problema conocido con los tipos booleanos en EL que no se reconocen como booleanos sino como objetos "normales" de Java? ¿Cuál es la forma correcta de manejar esto?
Gracias
Soy un usuario JSP novato, pero ¿no sería 'privado' en su declaración de variable de objeto' válida' que significa que no puede acceder a él directamente? –
Sí, esto es cierto en el mundo de Java, pero con EL puede acceder a las propiedades del objeto utilizando el estilo JavaBean (object.propertyName) siempre que haya proporcionado un getter (en este caso, isValid). Entonces, cuando dices case.valid, en realidad estás llamando a case.isValid(). Puedes ver que si cambio Boolean a boolean funciona bien. – DhafirNz
Entonces, si llama al método 'isValid()', ¿no funciona tan bien? –