Expression Language 2.2 en Tomcat 6: invocar a un método de un ManagedBean en JSF pasando parámetros.

0
8145

Expression Language 2.2 en Tomcat 6: invocar a un método de un ManagedBean en JSF pasando parámetros.

0. Índice de contenidos.


1. Introducción

Trabajando con JSF, gracias al lenguaje de expresiones, podemos vincular valores de componentes en la vista con propiedades en un ManagedBean de parte del control; del mismo modo que
podemos programar escuchadores de eventos y métodos de acción en el control que se ejecutarán frente a eventos y acciones del usuario en la vista.

Los que hemos trabajado con JSF con el soporte de jboss-el, bajo el paraguas de Jboss Seam, nos hemos acostumbrado a invocar a métodos del control pasándoles parámetros directamente
en la signatura de los métodos. Ahora con JEE 6 y Expression Language 2.2 ya disponemos de esta facilidad si trabajamos con un servidor de aplicaciones JEE compliant o con Apache Tomcat 7,
que lo incorpora por defecto.

En aquellos proyectos en los que aún trabajamos con Apache Tomcat 6 podemos habilitarlo para que soporte Expression Language 2.2 y en este tutorial vamos a ver cómo hacerlo.


2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 17′ (2.93 GHz Intel Core 2 Duo, 4GB DDR3 SDRAM).
  • Sistema Operativo: Mac OS X Snow Leopard 10.6.1
  • Apache Tomcat 6.0.32


3. Configuración.

Para habilitar el soporte de EL 2.2. en Apache Tomcat 6 debemos seguir estos sencillos pasos:

  • Primero: eliminar del directorio TOMCAT_HOME/lib/ el fichero el-api.jar que contiene la versión 1.2 del api de EL,

  • Segundo: añadir al directorio TOMCAT_HOME/lib/ los ficheros
    el-api-2.2.jar y
    el-impl-2.2.jar,

  • Tercero: añadir la siguiente configuración al descriptor de despliegue (web.xml) de nuestras aplicaciones:

    • si usamos MyFaces como implementación de JSF:
<context-param>
    <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
  • si usamos Mojarra como implementación de JSF:
  •   <context-param>
        <param-name>com.sun.faces.expressionFactory</param-name>
        <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
      </context-param>
    


    4. Ejemplo de uso.

    Una vez configurado ya podemos realizar este tipo de invocaciones al control:

    
    	<h:commandButton value="#msg['save']" action="#{catalogView.save(book)}">
    		<f:ajax execute="@form" render="@form" />
    	</h:commandButton>
     
    	
     
    	<h:commandLink action="#{catalogView.remove(book, true)}"
    		immediate="true" >
    			<f:ajax execute="@this" render="@form" />
    			<h:outputText value="#msg['remove']" />
    	</h:commandLink>
    


    5. Referencias.

    • http://wiki.apache.org/myfaces/HowToEnableEl22


    6. Conclusiones.

    La configuración es simple, pero implica modificar las librerías del propio Apache Tomcat, con lo que la configuración se hará extensible a todas las aplicaciones que se desplieguen en el mismo, debéis tenerlo en cuenta.

    Un saludo.

    Jose

    jmsanchez@autentia.com

    DEJA UNA RESPUESTA

    Por favor ingrese su comentario!

    He leído y acepto la política de privacidad

    Por favor ingrese su nombre aquí

    Información básica acerca de la protección de datos

    • Responsable:
    • Finalidad:
    • Legitimación:
    • Destinatarios:
    • Derechos:
    • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad