page method example jsf-2 jsf-2.2 prerenderview

jsf-2 - method - prerenderview example



Cuándo usar preRenderView versus viewAction? (1)

¿Cuándo se debe usar el evento preRenderView para inicializar los datos de una página en comparación con el uso de viewAction? ¿Son iguales en uso y tienen el mismo efecto?

evento preRenderView

<f:metadata> <f:event type="preRenderView" listener="#{myBean.initialize}"/> </f:metadata>

o

viewAction

<f:metadata> <f:viewAction action="#{myBean.initialize}"/> </f:metadata>


En la práctica, se pueden usar para lograr el mismo efecto, pero viewAction (nuevo con JSF2.2) viene con las siguientes mejoras:

  1. onPostback : viewAction viene con este atributo que le permite especificar si desea que la acción se ejecute en la devolución de datos a la misma vista (es decir, al actualizar la página o al enviar el botón, etc.). Por defecto es false , por lo que ni siquiera tiene que especificarlo si no es necesario. Para lograr el mismo efecto con preRenderView , necesitarás

    <f:metadata> <f:event type="preRenderView" rendered="#{facesContext.postBack}" listener="#{myBean.initialize}"/> </f:metadata>

  2. phase : este atributo le permite especificar que la acción se ejecute durante una fase JSF específica. Su valor predeterminado es INVOKE_APPLICATION , pero todos los demás JSF Phase Ids son válidos aquí.

  3. if : este atributo le permite suministrar una expresión de valor que evalúa a un resultado booleano. La acción de vista solo se ejecutará en el resultado de esta expresión.

  4. immediate : este atributo ahora otorga la capacidad para que una viewAction de vista se ejecute durante la fase APPLY_REQUEST_VALUES (en comparación con la fase INVOKE_APPLICATION predeterminada), lo que le permite comportarse como un UIComponent regular

En general, viewAction es un enfoque de diseño más limpio para llevar a cabo los comandos de vista.