1. Flujos JSF
Curso : Java EE
División de Alta Tecnología
2. Contenido del capitulo
TEMAS
1. Definición de Flujos JSF
2. Uso de Reglas de navegación
3. Reglas de navegación global
4. Manager Beans
5. Manejo de eventos con JSF
División de Alta Tecnología
3. Definición de flujos JSF
‡ JSF permite utilizar un mapa de navegación que
define el flujo que tendrá las páginas de la aplicación.
‡ En este flujo, se define que página se mostrará
cuando se pulse un botón de un formulario.
‡ El mapa de navegación se define en el archivo de
configuración, faces-config.xml. En ese mismo
archivo se declarará los managed beans.
División de Alta Tecnología
4. Uso de Reglas de Navegación
‡ El mapa de navegación se define en el faces-
config.xml y tiene la siguiente estructura
<navigation-rule>
<from-view-id>/dataentry/enterdata.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/dataentry/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>partialsuccess</from-outcome>
<to-view-id>/dataentry/partialsuccess.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/dataentry/failure.jsp</to-view-id>
</navigation-case>
</navigation-rule>
División de Alta Tecnología
5. Uso de Reglas de Navegación
‡ Cada entrada navigation-rule define los flujos que
tendrá una página origen.
‡ La página origen se define en la entrada from-view-
id) .
‡ Las páginas a las que se dirige la pagina de origen se
encuentra definido en la entrada navigation-rule.
‡ Cada entrada navigation-rule indica la página de
destino(to-view-id) y el nombre del flujo utilizado
(from-outcome).
División de Alta Tecnología
6. Tipos de Reglas de Navegación
‡ La reglas de navegación pueden ser estáticas ó dinámicas.
‡ Estática:
Implica que un control (Ejem: Boton) esta asociado
exclusivamente a un flujo.
‡ Dinámica:
Implica que durante la ejecución se puede elegir que flujo
utilizará un control. Se realizar programáticamente desde
los métodos del bean.
División de Alta Tecnología
7. Reglas de Navegación Global
‡ Generalmente los flujo definen una página de origen
hacia varios destinos.
‡ Los flujos globales consideran varios orígenes hacía
un destino.
‡ Son usados para evitar crear flujos hacia páginas
que tienen mucha demanda en las aplicaciones.
(Ejm: página de ayuda)
‡ Se utiliza el * para identificar a todas las páginas.
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>ayuda</from-outcome>
<to-view-id>/menu/ayuda.jsp</to-view-id>
</navigation-case>
División de Alta Tecnología
8. Managed Beans
‡ Son beans gestionados por Java Server Faces
‡ Definen el modelo de la aplicación JSF.
‡ Permiten mantener el estado de la aplicación.
‡ Cuentan con los siguientes alcances(scope)
‡ application
‡ session
‡ request
‡ none
‡ No necesitan instanciarse.
‡ Son definidos en el faces-config.xml
División de Alta Tecnología
9. Managed Beans
Ejemplo de especificación de beans en el faces-config.xml
<managed-bean>
<managed-bean-name>uNumber</managed-bean-name>
<managed-bean-class>gn.UNumber</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>minimum</property-name>
<property-class>long</property-class>
<value>0</value>
</managed-property>
«
Acceso a la información: #{uNumber.minimum}.
División de Alta Tecnología
10. Manejo de eventos con JSF
‡ El mecanismo de manejo de eventos IU JSF es muy similar
al empleado en la clase de componentes Swing. los
Listeners en JSF, por su parte, procesan los eventos
emitidos por los componentes.
‡ Por ejemplo, observe el siguiente código:
<h:commandButton
value = "Click Me"
action="#{SomeBean.submitButtonClicked}"
/>
Puede observarse cada vez que se hace clic sobre el botón se
hace una llamada al método Listener definido en la clase
"SomeBean" cuyo nombre es "submitButtonClicked".
División de Alta Tecnología
11. Tipos de Eventos JSF
Java Server Faces gestiona tres tipos de Eventos.
‡ Eventos de Cambio de Valor
‡ Eventos de Acción
‡ Eventos de Fase
División de Alta Tecnología
12. Modelo de eventos: Ejemplo
// En la pagína.
<h:commandButton
action=³#{myBean.procesar}´
value=³OK´/>
// En la clase
class MyBean { «
String procesar() { « }
}
División de Alta Tecnología