Get it on Google Play

JavaServer Faces I (JSF): action y actionListerner

23-01-2014
 

jsf-logoEn los elementos ‘h:commandButton’ y ‘h:commandLink” tenemos disponibles los parámetros ‘actionListener’ y ‘action’. Recordad que estos elementos siempre deben estar dentro de un elemento de formulario(‘h:form’).

<h:commandButton actionListener=”#{miBean.miActionListener}” 
action=”#{miBean.miAction}” />

El ‘actionListener’ se ejecuta antes que el ‘action’ y llama a un método que tiene una pinta como la siguiente:

public void miActionListener(ActionEvent event) {
    	// ...
	}

A través del objeto ‘event’ tiene acceso al estado del componente y la UI, cosa que ‘action’ no tiene. Tened en cuenta que podéis crear ‘actionListeners’ con parámetros y sin el parametro ‘event.’

Una vez ejecutado el ‘actionListener’ JSF ejecuta el ‘action’ que llama a un método que tiene la siguiente pinta:

public String miAction() {
	return siguientePagina;
	}

Tal como se ve en el ejemplo, el ‘action’ permite devolver que página debe mostrarse después de ejecutarse la acción. Al igual como el ‘actionListener’ también le podemos definir parámetros.

Hay que tener en cuenta que se pueden definir una cola de ‘actionListeners’. En caso que se lance una excepción del tipo ‘AbortProcessingException’ se interrumpirá el procesado a partir de ese momento:

 <h:commandButton actionListener=”#{miBean.miActionListener}” action=”#{miBean.miAction}”>
	<f:actionListener type=”com.lostsys.miap.actionListeners.MiSegundoActionListener”/>
</h:commandButton>

En resumen, utilizaremos el método ‘action’ cuando queramos que el elemento ejecute una acción de negocio, este método devolverá un String con la siguiente página a mostrar. Pondremos un ‘actionListener’ cuando queramos que se ejecute un ‘hook’ antes de la acción de negocio, por ejemplo para que haga ciertas comprobaciones o modifique la salida del ‘action’ en función de algo.

 

Comments

5 Responses to “JavaServer Faces I (JSF): action y actionListerner”
  1. fernando says:

    Gracias amigo, me sirvió tu simple y sencilla explicación

  2. Angel says:

    Gracias por la explicacion, me acaba de ser de gran ayuda

  3. Kliver says:

    Muy bien explicado, disculpa que es HOOK

  4. Hola,

    Un ‘hook’ es un concepto que se utiliza en CMSs tipo Drupal o Liferay entre otros para hacer módulos que ejecuten acciones en algún momento. Un ejemplo seria hacer un módulo que ejecutara algo en el momento en que el usuario hace login. No se si me he explicado muy bien.

    En este caso, si queremos que algo se ejecute antes que la acción lo podríamos poner en el actionListener. Así no tenemos que tener en la acción toda la lógica de negocio.

    Saludos,

  5. Juan Antonaccio says:

    Buenos dias, estoy tratando de hacer un ejercicio de prueba de JSF, y hago un ingreso a traves de un jsf, y cuando doy submit no hace lo que tengo en el action, y vuelve a pedir los datos. A la segunda vez si recien los graba a los datos o persiste, No entiendo porque hace esto . Si quiere despues le mando el proyecto comprimido para que lo mire. Desde ya muchas gracias.

Leave a Reply