Professional Documents
Culture Documents
0: Managed Beans
JSF es un framework para desarrollar UIs en aplicaciones web Java EE. Sigue el diseo Modelo-Vista-Controlador: - Modelo: contiene la lgica de negocio (managed beans) - Vista: son las interfaces grficas de usuario (pginas JSF) - Controlador: gestiona las peticiones del usuario, mostrando en cada ocasin la vista apropiada (FacesServlet) El servlet FacesServlet ya viene implementado, con lo que no tenemos que hacerlo nosotros. Cuando el controlador recibe una peticin, comprueba si sigue un patrn definido en el fichero web.xml, como por ejemplo /faces/*. Si es as, la considera una 'Faces Request' y al procesarla crea un objeto conocido como JSF context, que contiene los datos y la navegacin correspondiente a las vistas apropiadas. Esta informacin se encuentra en el fichero faces-config.xml, que se conoce como 'JSF Navigation Model'. Este fichero contiene toda la posible navegacin entre las pginas JSF de nuestra aplicacin. Veamos un ejemplo de regla de navegacin entre pginas: <navigation-rule> <from-view-id>/page1.xhtml</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/page2.xhtml</to-view-id> </navigation-case> <navigation-case> <from-outcome>failure</from-outcome> <to-view-id>/page3.xhtml</to-view-id> </navigation-case> </navigation-rule> Con esta regla de navegacin, desde la pgina page1.xhtml, podemos ir a page2.xhtml si todo ha ido bien o a page3.xhtml si ha ocurrido un error. En posteriores post veremos cmo devolver 'success' o 'failure' para saber as a qu pgina hay que ir. El ciclo de vida de JSF procesa la peticin del usuario con sus datos de entrada, haciendo que el desarrollador no necesita escribir cdigo para procesarla. Por ejemplo, cuando pinchamos sobre un botn en tiempo de ejecucin, se activa automticamente este ciclo de vida. <h:commandButton value="I am a button"/> Managed Beans (I) : Como ya hemos visto anteriormente, JSF separa la capa de presentacin de la lgica de negocio. Para que nuestras pginas JSF puedan acceder a esta lgica, utilizamos managed beans. Un bean es un POJO (Plain Old Java Object), algo tan sencillo como una clase que tiene un constructor pblico sin argumentos (constructor por defecto) y sus propiedades tienen asociados sus correspondientes mtodos get/set .Si en una clase no indicamos ningn constructor, el compilador le aade este constructor por defecto. Hay que tener en cuenta que si escribimos en la clase un constructor no vacio, ya no se nos aadir en tiempo de compilacin este constructor por defecto. No necesitamos instanciarlos con new(), ya que son inicializados por su contenedor en tiempo de ejecucin cuando la aplicacin los necesita. 1pgina JSF lee los valores d las propiedades del bean q tiene asociada, y cuando se hace 1 post d 1formulario, se guardan sus valores en el bean (luego veremos cmo funciona el Ciclo Vida JSF y sabremos en q momento se guardan esos valores). Cmo declaramos un bean? Desde el fichero faces-config.xml o con anotaciones. Utilizando el fichero faces-config.xml <managed-bean> <managed-bean-name>userBean</managed-bean-name> <managed-bean-class>com.examples.UserBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> Siendo desarrolladores, puede que alguna vez le hayamos cogido mana a los ficheros de configuracin .xml... s, no pasa nada por reconocerlo, tambin somos humanos ;D Por eso, desde q Java 5 introdujo las anotaciones todo es mas facil Utilizando anotaciones package com.examples; import javax.faces.bean.ManagedBean import javax.faces.bean.SessionScoped @ManagedBean @SessionScoped public class UserBean {...} Una vez declarado nuestro bean de ejemplo, una pgina JSF puede acceder a l utilizando el nombre userBean ya que, si no indicamos ningn nombre concreto, por defecto se le asigna el nombre de la clase con la primera letra en minscula. @ManagedBean(name="user") @SessionScoped public class UserBean {...} En este nuevo ejemplo vemos que ahora el nombre del bean es user.