3. jsf, jpa y hibernate - capitulo 02
TRANSCRIPT
División de Alta Tecnología
Flujos JSFFlujos JSF
Curso : Java EE
División de Alta Tecnología
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
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
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
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
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
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
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
Managed Beans
<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}.
Ejemplo de especificación de beans en el faces-config.xml
División de Alta Tecnología
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
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
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
Modelo de eventos: Ejemplo
Laboratorio 2