Tras la breve presentación de las EL ( Expresion Language), vamos a hacer un pequeño ejemplo con la aplicación que utilizamos en este blog.
Puedes pulsar aquí para descargarte la aplicación.
En la página indice.jspx, mostrábamos la lista de trabajadores, así como su salario.
Vamos a añadir una EL, para que muestre un texto dependiendo del salario que reciba.
Más de 5000 pondremos el valor "Alto", y cuando el valor sea menor de este valor, mostrará "Bajo".
Para ello añadimos una EL en la columna de Salario para que muestre el valor.
comparación a través de EL |
Ejecutamos la aplicación (o pulsamos F5, ya que es un cambio realizado en el jspx), y vemos el resultado.
Al hacerlo nos muestra el siguiente mensaje de error:
mensaje de error |
Observemos el mensaje de error:
javax.faces.el.EvaluationException: com.sun.faces.el.impl.ElException: Se ha intentado forzar un valor del tipo "oracle.jbo.domain.Number" para convertirlo en el tipo "java.lang.Long"
Esto nos indica que al hacer la comparación entre el valor de la columna row.Salary y el valor, se da cuenta de que los tipos de datos son distintos.
El tipo oracle.jbo.domain.Number es el de la columna y el java.lang.Long es el del valor con el que estamos comparando (5000).
Esto es algo muy habitual cuando estamos trabajando con Expresiones del Lenguaje, y es que los tipos nos puede ocasionar problemas.
La forma de solucionarlo es hacer lo siguiente:
El tipo Number tiene un método getValue(), que devuelve el valor de tipo double con el cual podemos comparar con el valor que hemos puesto.
Podemos ver los métodos y propiedades del tipo Number (oracle.jbo.domain.Number) en el siguiente enlace:
http://docs.oracle.com/cd/B14099_19/web.1012/b14023/oracle/jbo/domain/Number.html
Ojo! ¿la función se llama getValue y el valor que llamamos es "value"?
este tipo de funciones get y set, se llaman " accesors", y aunque a nivel de código (java) las llamemos con el nombre getValue(), en la expresión del lenguaje, nos referimos al nombre de la propiedad "value".
Nota: puede que ni exista la propiedad value, con que exista la función getValue correspondiente, es suficiente. Ya veremos esto más adelante.
Tras el cambio, podemos refrescar la página y ver el resultado.
Como podemos observar en la tabla superior, ya aparece el texto en la última columna y que éste texto depende del valor del campo "Salary".
Otros artículos relacionados
- Operadores de Expression Language
- Introduccion a Expresión del lenguaje (Expression language)
- Deshabilitar un componente (disable) usando expressiones del lenguaje
No hay comentarios:
Publicar un comentario