JSF es un framework para desarrollar UIs en aplicaciones web Java EE, que sigue el diseño Modelo-Vista-Controlador:
El servlet FacesServlet ya viene implementado, con lo que no tenemos que hacerlo nosotros. Cuando el controlador recibe una petición, comprueba si sigue un patrón 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 navegación correspondiente a las vistas apropiadas.
Esta información se encuentra en el fichero faces-config.xml, que se conoce como 'JSF Navigation Model'. Este fichero contiene toda la posible navegación entre las páginas JSF de nuestra aplicación.
Veamos un ejemplo de regla de navegación entre páginas:
Con esta regla de navegación, desde la página 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 cómo devolver 'success' o 'failure' para saber así a qué página hay que ir.
El ciclo de vida de JSF procesa la petición del usuario con sus datos de entrada, haciendo que el desarrollador no necesita escribir código para procesarla. Por ejemplo, cuando pinchamos sobre un botón en tiempo de ejecución, se activa automáticamente este ciclo de vida.
- Modelo: contiene la lógica de negocio (managed beans)
- Vista: son las interfaces gráficas de usuario (páginas JSF)
- Controlador: gestiona las peticiones del usuario, mostrando en cada ocasión la vista apropiada (FacesServlet)
El servlet FacesServlet ya viene implementado, con lo que no tenemos que hacerlo nosotros. Cuando el controlador recibe una petición, comprueba si sigue un patrón 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 navegación correspondiente a las vistas apropiadas.
Esta información se encuentra en el fichero faces-config.xml, que se conoce como 'JSF Navigation Model'. Este fichero contiene toda la posible navegación entre las páginas JSF de nuestra aplicación.
Veamos un ejemplo de regla de navegación entre páginas:
<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 navegación, desde la página 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 cómo devolver 'success' o 'failure' para saber así a qué página hay que ir.
El ciclo de vida de JSF procesa la petición del usuario con sus datos de entrada, haciendo que el desarrollador no necesita escribir código para procesarla. Por ejemplo, cuando pinchamos sobre un botón en tiempo de ejecución, se activa automáticamente este ciclo de vida.
<h:commandButton value="I am a button"/>
Me parece que JSF2 utiliza MVC2 (Modelo, vista y un unico controlador).
ResponderEliminarComo muy bien comentas, JSF nos proporciona un servlet, que es el que actúa de controlador, y maneja las peticiones JSF.
ResponderEliminarEso sí, lo de MVC2 es la primera vez que lo escucho ;d