Professional Documents
Culture Documents
8 < cheros JSP con las tag libraries de JSF Vista: Conjunto de Facelets (cheros xhtml) : otros PDLs (Page Declaration Languages) [p.ej. XUL] Describen la jeraqu de componentes JSF que conforman cada a una de las pginas (pantallas) del interfaz de usuario de la a aplicacin. o Vinculan los componentes JSF con los Managed Beans (objetos de respaldo)
Se hace uso de la sintaxis del Unied Expresion Language para referenciar los Managed Beans y sus atributos (#{objeto.atributo})
Modelo: Managed Beans (objetos de respaldo gestionados por el framework JSF) Objetos Java (Java Beans) responsables de la lgica de la aplicao cin o
implementada directamente en los propios Managed Beans delegando en componentes de negocio (EJBs, Beans SPRING, Servicios Web, etc,...)
Responden a los eventos generados por los componentes JSF Controlan la navegacin entre pginas (mtodos de accin) o a e o
FJRP, FMBR 2008-2010 ccia SCS 4
Controlador: Faces Servlet (congurado en faces-config.xml [opc. en JSF 2.0]) + mtodos de accin de los Managed Beans. e o Todas las peticiones HTTP del usuario pasan por el Faces Servlet Faces Servlet examina las peticiones recibidas, actualiza la representacin del interfaz del cliente y los datos de los Managed o Beans e invoca los manejadores de eventos y las acciones sobre el modelo a travs de los mtodos de los Managed Beans e e
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/jav <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>faces/index.xhtml</welcome-file> </welcome-file-list> </web-app>
Otros elementos JSF Renderizadores (renderer): objeto responsable de generar la representacin de los componentes JSF a mostrar en los clientes y de recuperar las o entradas de usuario recibidas (Strings en los parmetros HTTP) para actualizar a los valores vinculados a los componentes por defecto, JSF incluye un render kit para HTML 4.0
1. Restaurar vista: Faces Servlet localiza la vista correspondiente a la URL de la peticin recibida o Si es la primera visita: genera el rbol de componentes de esa a vista (UIViewRoot) a partir de su chero de denicin (JSP, o Facelets, ....) Si la vista ya fue generada: recupera el correspondiente (UIViewRoot) previo
2. Actualizar valores peticin: A partir de los valores de entrada que o llegan en la peticin HTTP (campos de entrada, parmetros HTTP, o a cookies, campos cabecera HTTP, etc) se actualizan los valores vinculados a los nodos del rbol de componentes (UIViewRoot) que a representa el interfaz de usuario. Slo se actualiza el estado de los componentes, no los valores de o los Managed Beans Se realizan las conversiones String -Objeto necesarias (actan los u Converters) Si hay errores de conversin se salta a la fase de Renderizado para o informar del error. Se renderiza la misma pgina. a Si incluye componentes para mensajes de error (<h:message>, <h:messages>) se hacen visibles con los errores de conversin de o los componentes implicados.
3. Procesar validaciones: JSF recorre recursivamente el rbol de a componentes (UIViewRoot) que los valores recibidos por cada componente son aceptables. Actan los Validators asociados a cada componentes JSF. u Si hay errores de conversin se salta a la fase de Renderizado para o informar del error. Se renderiza la misma pgina. a Si incluye componentes para mensajes de error (<h:message>, <h:messages>) se hacen visibles con los errores de validacin de o los componentes implicados. 4. Actualizar valores del modelo: Se actualizan los valores de los atributos de los Managed Beans vinculados a los componentes JSF mediante EL (expresin language). o Esos valores ya han sido convertidos y validades es seguro actualizar los objetos de respaldo que conforman el Modelo.
5. Invocar lgica de aplicacin: Se invocan los mtodos de los o o e Managed Beans (que ya tendrn sus atributos sincronizados con las a entradas del usuario) a) Se invocan los manejadores de eventos registrados en los componentes JSF.
Eventos de cambio de valor (atributo valueChangeListener en componentes de entrada [<h:inputText>, <h:inputTextArea>, <h:selectOneListbox>, ...]) <h:selectOneMenu valueChangeListener="#{model.menuValueChanged}" value="#{model.serviceLevel}"> ....
Eventos de accin (atributo actionListener en componentes de accin o o [<h:commandLink>, <h:commandButton>]) <h:commandButton value="Confirm" actionListener="#{UserBean.confirmActionListene .... public void confirmActionListener(ActionEvent evt) {...}
6. Renderizar respuesta: Una vez decidida cul es la vista a enviar al a cliente (pgina actual con componentes de mensaje activados si a hubo error o la siguiente pgina a mostrar si todo fue correcto) se a generada la representacin de sus componentes (HTML, XML, ...) o En esta fase se almacena la representacin en memoria de la vista o actual (UIViewRoot) para posteriores visitas. Adicionalmente se pueden vincular manejadores de eventos espec cos que se incocarn en distintas etapas del ciclo de vida JSF (lifecicle a events).
10
(c) Managed Beans Objetos de respaldo gestionados por el framework JSF El contenedor los crea en tiempo de ejecucin cuando son necesarios o para la aplicacin. o Cualquier Java Bean (constructor sin argumentos + acceso con getXXX() y setXXX()) denido como public puede ser congurado como Managed Beans Tambin se permiten listas (java.util.List) y tablas Hash e (java.util.Map) Son responsables del Modelo. Almacenan los datos a mostar en las vistas o los recuperadas de la entrada de usuario Implementan la lgica de la aplicacin (directamente o delegada) o o Manejan la nevagacin entre las vistas o Pueden ser compartidos por varias vistas (depender de su alcance). a Se vinculan a las vistas empleando el EL (expression language) Declaracin de Managed Beans . o En JSF 2.0 se declaran y conguran con la anotacin @ManagedBean. o Se les puede asignar un nombre (parmetro name=....) a Puede especicarse su alcance (scope o visibilidad)
Alcance @ApplicationScoped @SessionScoped Objetos disponibles para todas las peticiones de cualquier usuario en todas las vistas de la aplicacin o Objetos disponibles para todas las peticiones que formen parte de la misma sesin de un cliente o (valores permanecen entre peticiones de la misma sesin) o Objetos disponibles para todas las peticiones que se realicen sobre la misma vista (pgina JSF) a (valores permanecen hasta que se navegue a otra pgina) a Objetos disponibles desde que se recibe una peticin o hasta que se la respuesta se env al cliente a (alcance por defecto) Objetos no son visibles a las vistas JSF, slo a otros Managed Beans o
@ViewScoped
@RequestScoped
@NoneScoped
11
Ejemplo
@ManagedBean @SessionScoped public UsuarioController {....}
<managed-bean> <managed-bean-name> usuarioController </managed-bean-name> <managed-bean-class> controladores.UsuarioController </managed-bean-c <managed-bean-scope> session </managed-bean-scope> </managed-bean>
Se pueden especicar los valores de las propiedades de los Managed Beans Con la anotacin @ManagedProperty o en faces-config con o <managed-property> Util para inicializar esos atributos o para inyectarles referencias a otros Managed Beans o a sus propiedades.
@ManagedBean public class BookController { @ManagedProperty(value = "#{initController.defaultBook}") private Book book; @ManagedProperty(value = "this is a title") private String aTitle; <managed-bean> <managed-bean-name> bookController </managed-bean-name> <managed-bean-class> controller.BookController </managed-bean-class> <managed-bean-scope> session </managed-bean-scope> <managed-property> <property-name> aTitle </property-name> <value> this is a title </value> </managed-property> <managed-property> <property-name> book </property-name> <value> #{initController.defaultBook} </value> </managed-property> ... </managed-bean>
12
Ciclo de vida de los Managed Beans Los Managed Beans son creados por el Framework JSF cuando se necesitan (nunca se llama directamente a su new()) Se puede ejecutar cdigo propio justo despus de su creacin o e o anotando mtodos con @PostConstruct y justo antes de su e liberacin, con @PreDestroy. o Referencias a Managed Beans . Todo Managed Beans tiene asignado un identicador con el que es referenciado en las vistas JSF para las que sea visible empleando la sintaxis EL ( emphExpression Language). Para especicar al acceso desde las vistas JSF a propiedades o los mtodos a ejecutar de un Managed Beans se emplea la notacion e #nombreManagedBean.nombreAtributo. En el caso de propiedades se especican mediante el atributo value=... de los componentes JSF. Esas referencias se traducirn en llamadas a los respecticos mtoa e dos getAtributo() o setAtributo(...) segn corresponda al compou nente JSF. En JSF 2.0 se permite pasar parmetros a los mtodos especia e cados con EL.
13
(d) Navegacin y acciones o Los componentes de accin (<h:commandLink>, <h:commandButton>) o fuerzan el envio de una peticin HTTP POST desde el cliente. o Mediante su atributo action=... se puede especicar la siguiente vista JSF a la que navegar cuando se activen. Puede especicarse directamente el nombre de la vista destino (la extensin es opcional) [navegacin impl o o cita] Puede incluir una referencia a un mtodo de accin de un Manae o ged Beans accesible desde esa vista. u Los mtodos de accin deben ser pblicos y devolver un String e o El String de retorno especica cal ser la siguiente vistas u a Si el nombre de una vista (la extensin es opcional) se renderio zar esa pgina. [navegacin impl a a o cita] Si el String est recogido en las reglas de navegacin del chero a o <faces-config> se renderizar esa pgina. a a En otro caso se recarga la pgina actual (informando del error en a los componentes de mensajes) En EL de JSF 2.0 se permite pasar parmetros a los mtodos. a e Dependiendo de las necesidades de cada aplicacin concreta, t o picamente los mtodos de accin: e o Invocan a la lgica de aplicacin con los datos que se acaban o o de recibir del cliente (ya sincronizados con las propiedades del Managed Bean) Deciden a qu vista navegar en base a las propiedades del Manae ged Bean Preparan los datos precisos para esa vista, invocando la lgica de o la aplicacin o Devuelven el String que indentica la vista de destino
14
15