Invocar métodos con parámetros por EL en JSF 1.2
jsf-1.2 (1)
Estoy usando una tabla de datos y para cada fila tengo dos botones, un "Editar" y un "Eliminar".
Necesito que estos botones sean de solo lectura, es decir, deshabilitados, si se cumple una determinada condición para la fila en cuestión. He visto en JSF 2 que es posible pasar parámetros a las llamadas a métodos. ¿Hay algo equivalente en JSF 1.2?
Lo ideal es que me guste algo así como (la variable de bucle es loop y hay otro bean, helper , que contiene el método que me gustaría invocar):
<h:commandButton value="Edit"
disabled="#{helper.isEditable(loop.id)}" />
En este caso, no tiene sentido semántico agregar un atributo isEditable al bean y no es práctico crear un objeto envoltorio alrededor del bean.
Gracias por adelantado.
He visto en JSF 2 que es posible pasar parámetros a las llamadas a métodos. ¿Hay algo equivalente en JSF 1.2?
Pasar parámetros a las llamadas a métodos no es específico de JSF 2. Es específico de EL 2.2, que a su vez es parte de JSP 2.2 / Servlet 3.0 / Java EE 6. JSF 2 también es parte de Java EE 6. En otras palabras, si despliega su aplicación web JSF 1.2 en un contenedor compatible con Servlet 3.0 como Tomcat 7, Glassfish 3, etc. y su web.xml
se declara conforme a la versión de la especificación Servlet 3.0, entonces funcionará la caja para JSF 1.x también.
Sin embargo, si todavía tiene como objetivo un contenedor de una versión de Servlet anterior, debe proporcionar una implementación de EL diferente que admita la invocación de métodos con argumentos. Una de esas implementaciones es JBoss-EL que puede instalar simplemente colocando el archivo jboss-el.jar
en /WEB-INF/lib
de su aplicación web y agregando el siguiente parámetro de contexto al web.xml
. Aquí hay un ejemplo específico de Mojarra ( Mojarra es el nombre clave de JSF RI):
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
Si está utilizando MyFaces como implementación JSF, necesita el siguiente parámetro de contexto:
<context-param>
<param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>