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

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

Leave a Reply

© Albert Coronado Calzada