Invocar métodos con parámetros de EL en JSF 1.2
Pregunta
Estoy usando una datos y para cada fila tengo dos botones, una "edición" y una "eliminar".
Necesito que estos botones sean de solo lectura, es decir, discapacitados, si se cumple una determinada condición para la fila en cuestión. He visto en JSF 2 que es posible pasar los parámetros a las llamadas de método. ¿Hay algo equivalente en JSF 1.2?
Idealmente, lo que me gustaría algo como (la variable de bucle es círculo Y hay otro frijol, ayudante, 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 iseditable Atribuir al frijol y no es práctico crear un objeto de envoltura alrededor del frijol.
Gracias por adelantado.
Solución
He visto en JSF 2 que es posible pasar los parámetros a las llamadas de método. ¿Hay algo equivalente en JSF 1.2?
Pasar los parámetros a las llamadas del método es no Específico para 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 implementa su aplicación web JSF 1.2 en un contenedor compatible de servlet 3.0 como Tomcat 7, Glassfish 3, etc. y su web.xml
se declara conforma la versión Servlet 3.0 Spec, entonces solo funcionará el cuadro para JSF 1.x también.
Sin embargo, si todavía está dirigido a un contenedor de una versión de servlet anterior, entonces debe proporcionar una implementación de EL diferente que admite invocar métodos con argumentos. Una de esas implementaciones es JBoss-El que puede instalar simplemente dejando caer el jboss-el.jar
presentar 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 en código 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: en su lugar:
<context-param>
<param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>