miércoles, 2 de abril de 2014

Ejemplo de Expresión del Lenguaje (Expression Language)

Resumen: En este artículo veremos un ejemplo de uso de Expresiones del lenguaje

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.

expresion language en el codigo
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:

error javax.faces.el.EvaluationException
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:


comparacion expresion lenguaje corregida


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:


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.

vista resultado comparacion expression language


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
-
-
-

No hay comentarios:

Publicar un comentario