Está en la página 1de 16

ndice Introduccin ...................................................................................... 2 Modelo de Componentes de Interfaz de Usuario ..............................

4 Las Clases de los Componentes del Interface de Usuario ............. 4 Modelo de Navegacin ....................................................................10 Modelo de navegacin:Formato de las reglas ...............................10 Usando JSF con JSP .......................................................................11 Ejemplo de aplicacin de red JSF....................................................12

Introduccin

Para el desarrollo de aplicaciones de negocio se utiliza frecuentemente el patrn de diseo MVC Modelo Vista Controlador (Model View Contrdller) que adems es sencillo de implementar en las aplicaciones web. En este patrn el modelo es modificable por las funciones de negocio. Estas funciones son solicitadas por el usuario mediante el uso de un conjunto de vistas de la aplicacin que solicitan dichas funciones de negocio a travs de un controlador, que es el mdulo que recibe las peticiones de las vistas y las procesa. Se suele clasificar en dos tipos a las aplicaciones basadas en MVC:

tipo 1. Las vistas conocen la accin que se va a invocar en su peticin. Normalmente la funcin esta cableada dentro de la vista

tipo 2. El controlador introduce un conjunto de reglas que mapean a las peticiones con las funciones, controlando adems el flujo de navegacin por la aplicacin.

Un ejemplo de aplicaciones de tipo 1 son las que se construyen utilizando JSF o ASP.NET y como ejemplo de tipo 2 seran las creadas con Struts. La creacin de aplicaciones basadas en el patrn MVC se ve facilitada por el uso de marcos de trabajo (frameworks). Un marco de trabajo es un conjunto de APIs y mdulos normalmente acompaados de la documentacin y gua de uso que definen la manera de implementar alguna de las capas de nuestra aplicacin. Lo podemos ver tambin como la estructura o cimientos sobre los que crear nuestra aplicacin. JavaServer Faces (JSF) es una tecnologa y framework para aplicaciones Java basadas en web que simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE. JSF usa JavaServer Pages (JSP) como la tecnologa que permite hacer el despliegue de las pginas, pero tambin se puede acomodar a otras tecnologas como XUL.

JSF incluye:

Un conjunto de APIs para representar componentes de una interfaz de usuario y administrar su estado, manejar eventos, validar entrada, definir un esquema de navegacin de las pginas y dar soporte para

internacionalizacin y accesibilidad.

Un conjunto por defecto de componentes para la interfaz de usuario. Dos bibliotecas de etiquetas personalizadas para JavaServer Pages que permiten expresar una interfaz JavaServer Faces dentro de una pgina JSP.

Un modelo de eventos en el lado del servidor. Administracin de estados. Beans administrados.

Modelo de Componentes de Interfaz de Usuario


Los componentes UI JavaServer Faces son elementos configurables y reutilizables que componen el interface de usuario de las aplicaciones JavaServer Faces. Un componente puede ser simple, como un botn, o compuesto, como una tabla, que puede estar compuesta por varios componentes. La tecnologa JavaServer Faces proporciona una arquitectura de componentes rica y flexible que incluye:

Un conjunto de clases UIComponent para especificar el estado y comportamiento de componentes UI.

Un modelo de renderizado que define cmo renderizar los componentes de diferentes formas.

Un modelo de eventos y oyentes que define cmo manejar los eventos de los componentes.

Un modelo de conversin que define cmo conectar conversores de datos a un componente.

Un modelo de validacin que define cmo registrar validadores con un componente.

Las Clases de los Componentes del Interface de Usuario


La tecnologa JavaServer Faces proporciona un conjunto de clases de componentes UI, que especifican toda la funcionalidad del componente, cmo mantener su estado, mantener una referencia a objetos del modelo, y dirigir el manejo de eventos y el renderizado para un conjunto de componentes estndar. Estas clases son completamente extensibles, lo que significa que podemos extenderlas para crear nuestros propios componentes personalizados. Todas las clases de componentes UI de JavaServer Faces descienden de la clase UIComponentBase, que define el estado y el comportamiento por defecto de un

UIComponent. El conjunto de clases de componentes UI incluido en la ltima versin de JavaServer Faces es:

UICommand: Representa un control que dispara actions cuando se activa. UIForm: Encapsula un grupo de controles que envan datos de la aplicacin. Este componente es anlogo a la etiqueta form de HTML.

UIGraphic: Muestra una imagen. UIInput: Toma datos de entrada del usuario. Esta clase es una subclase de UIOutput.

UIOutput: Muestra la salida de datos en un pgina. UIPanel: Muestra una tabla. UIParameter: Representa la sustitucin de parmetros. UISelectItem: Representa un slo tem de un conjunto de tems. UISelectItems: Representa un conjunto completo de tems. UISelectBoolean: Permite a un usuario seleccionar un valor booleano en un control, selececcionndolo o deseleccionndolo. Esta clase es una subclase de UIInput.

UISelectMany: Permite al usuario seleccionar varios tems de un grupo de tems. Esta clase es una subclase de UIInput.

UISelectOne: Permite al usuario seleccionar un tem de un grupo de tems. Esta clase es una subclase de UIInput.

La mayora de los autores de pginas y de los desarrolladores de aplicaciones no tendrn que utilizar estas clases directamente. En su lugar, incluirn los componentes en una pgina usando la etiqueta correspondiente al componente. La mayora de estos componentes se pueden renderizar de formas diferentes. Por ejemplo, un UICommand se puede renderizar como un botn o como un hiperenlace.

JavaServer Faces componentes de interfaz de usuario (UI) son los bloques de construccin de vista de JavaServer Faces.JavaServer Faces componentes de interfaz de usuario son elementos configurables, reutilizables que componen la interfaz de usuario de aplicaciones JavaServer Faces. Un componente puede ser simple, como un botn, o pueden ser compuestos, tales como una tabla, compuesta de mltiples componentes. La tecnologa JavaServer Faces

proporciona una rica arquitectura de componentes flexibles que incluye lo siguiente: Un modelo de representacin que define el modo de hacer los componentes de varias maneras Un evento de escucha y el modelo que define cmo manejar los eventos de los componentes Un modelo de conversin que define cmo registrar los convertidores de datos en un componente Un modelo de validacin que define cmo registrar validadores en un componente. Esta seccin describe brevemente cada una de estas piezas de la arquitectura de componentes. Los componentes de la interfaz de usuario Son JavaBeans Se ejecutan en el lado del servidor Tienen estado Se organizan en rboles de vistas Representacin especfica: renderer Familia de representaciones: kits de renderer <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>

La tecnologa JavaServer Faces proporciona un conjunto de clases de componentes de interfaz de usuario y de comportamiento asociados a las interfaces que especifican todas las funcionalidad de los componentes de interfaz de usuario, como componente de participacin del estado, mantener una referencia a los objetos, y un evento de conduccin y manejo de la prestacin de un conjunto de componentes estndar. Las clases de componentes son totalmente extensibles, permitiendo a los escritores de componentes para crear sus propios componentes personalizados. Creacin de componentes personalizados es un tema avanzado que veremos ms tarde. La clase base abstracta para todos los componentes de interfaz de usuario es javax.faces.component.UIComponent. Las clases de componentes de interfaz de usuario amplan la clase UIComponentBase, (una subclase dela clase UIComponent), que define el estado por defecto y el comportamiento de un componente de interfaz de usuario. El siguiente conjunto de clases de componentes de interfaz de usuario se incluye conla tecnologa JavaServer Faces: UIColumn: Representa una sola columna de datos en un componente UIData. UICommand: Representa un control que inicia acciones cuando se activa. UIData: Representa un enlace de datos a una coleccin de datos representados por una instanciadataModel. UIForm: Encapsula un grupo de controles que enviar datos a la aplicacin. Este componente es anlogo a la etiqueta de formulario en HTML. UIGraphic: Muestra una imagen. UIInput: Toma de entrada de datos de un usuario. Esta clase es una subclase de UIOutput. UIMessage: Muestra un mensaje de error traducidos. UIMessages: Muestra un conjunto de mensajes de error traducidos.

UIOutcomeTarget: Muestra un hipervnculo en la forma de un vnculo o un botn. UIOutput: Muestra la salida de datos en una pgina. UIPanel: administra el diseo de sus componentes nio. UIParameter: Representa los parmetros de sustitucin. UISelectBoolean: Permite al usuario establecer un valor booleano en un control de seleccin yanulacin de ella. Esta clase es una subclase de la clase UIInput. UISelectItem: Representa un solo elemento en un conjunto de elementos. UISelectItems: Representa todo un conjunto de elementos. UISelectMany: Permite al usuario seleccionar varios elementos de un grupo de elementos. Estaclase es una subclase de la clase UIInput. UISelectOne: Permite al usuario seleccionar un elemento de un grupo de elementos. Esta clase es una subclase de la clase UIInput. UIViewParameter: Representa los parmetros de consulta en una solicitud. Esta clase es unasubclase de la clase UIInput. UIViewRoot: Representa la raz del rbol de componentes. Adems de ampliar UIComponentBase, las clases de componente tambin aplicar una o ms interfaces de comportamiento, cada uno de los cuales define cierto

comportamiento de un conjunto de componentes cuyas clases implementan la interfaz. Estas interfaces de comportamiento son las siguientes: ActionSource: Indica que el componente puede desencadenar un evento de accin. Esta interfaz est diseado para utilizarse con componentes basados en la tecnologa JavaServer Faces 1.1_01y versiones anteriores. ActionSource2: Extiende ActionSource, y por lo tanto proporciona la misma funcionalidad. Sin embargo, se permite a los componentes a utilizar el EL

unificado cuando se hace referencia a los mtodos para controlar los eventos de accin. EditableValueHolder: Extiende ValueHolder y especifica las caractersticas adicionales para los componentes modificable, como la validacin y emitir los eventos de cambio de valor. NamingContainer: los mandatos que cada componente de raz en este componente tiene una identificacin nica. StateHolder: Indica que un componente ha estado que deben guardar entre las solicitudes. ValueHolder: Indica que el componente mantiene un valor local, as como la posibilidad de acceder a los datos en el nivel de modelo. SystemEventListenerHolder: Mantiene una lista de casos SystemEventListener para cada tipo de SystemEvent definido por esa clase. ClientBehaviorHolder: aade la capacidad de unir los casos ClientBehavior como una secuencia de comandos reutilizables. Cada etiqueta personalizada definida en el estndar HTML hacer kit se compone de la funcionalidad delos componentes (definidos en la clase UIComponent) y la prestacin de atributos (definidos por la claseRenderer).

Modelo de Navegacin

pginas mediante reglas que indican qu eventos permiten pasar de una pgina a otra. El evento null dirige de nuevo a la ltima pgina. La especificacin de la navegacin en aplicaciones basadas en JSF se hace mediante el fichero de configuracin faces-config.xml en lugar de utilizar un servlet.

Modelo de navegacin: Formato de las reglas


<navigation-rule> <from-view-id>/init.jsp</from-view-id> <navigation-case> <from-outcome>event</from-outcome> <to-view-id>/end.jsp</to-view-id>

Usando JSF con JSP

Aporta tags para funcionar sobre jsps. Se podra usar JSF en otros entornos diferentes a jsp. Tenemos una librera estndar de JSF-Html para crear aplicaciones web. Nos da un nivel de informacin independiente de estar en un contenedor webservlets o un contenedor basado en portlets. Retrasa la renderizacin hasta el ltimo momento para poder renderizar con toda la informacin bien preparada. Nos permite crear componentes propios para reutilizar. JSF tiene un Servlet como entrada de las llamadas a su arquitectura. Java Server Faces (JSF) de las aplicaciones requieren algn tipo de tecnologa de visualizacin, tales como Java Server Pages. Una de las cosas interesantes acerca de JSP es la posibilidad de un ampliarlo elemento con XML etiquetas especial

personalizadas. Una etiqueta

personalizada es

respaldado por el cdigo de Java, que puede ser utilizada, adems de los elementos estndar de JSP o elementos HTML. Una etiqueta personalizada puede hacer casi cualquier cosa: mostrar el valor de las variables, anlisis de XML, de forma condicional mostrar partes de una pgina, acceder a una base de datos, y as. Su objetivo principal es mantener el cdigo Java de las pginas y permitir que los desarrolladores de interfaz para utilizar las etiquetas sencillas y familiares en su lugar. Un grupo de relacionados con etiquetas personalizadas forma una biblioteca de etiquetas.

JSF se integra con JSP con etiquetas personalizadas. Todas las etiquetas JSF que hemos mostrado hasta el momento <h:inputText> , <h:outputText> , <h:form> , <f:view> , y as sucesivamente-son etiquetas personalizadas. Implementaciones de JSF JSP deben ser compatibles con las bibliotecas de etiquetas personalizadas que proporcionan acceso a todos los componentes estndar, prestadores, validadores y convertidores.

Ejemplo de aplicacin de red JSF


Ilustremos estas ideas con un ejemplo. Vamos a implementar inicio/cierre de sesin de usuario para una aplicacin que utiliza JSF. Primero, definiremos un Web Bean para mantener el nombre de usuario y contrasea escritos durante el inicio de sesin: @Named @RequestScoped public class Credentials { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }

Este Web Bean est vinculado al intrprete de comandos de inicio de sesin en el siguiente formulario JSF: <h:form> <h:panelGrid columns="2" rendered="#{!login.loggedIn}"> <h:outputLabel for="username" >Username:</h:outputLabel> <h:inputText id="username" value="#{credentials.username}"/> <h:outputLabel for="password" >Password:</h:outputLabel> <h:inputText id="password" value="#{credentials.password}"/> </h:panelGrid> <h:commandButton value="Login" action="#{login.login}" rendered="#{!login.log gedIn}"/> <h:commandButton value="Logout" acion="#{login.logout}" rendered="#{login.lo ggedIn}"/> </h:form > El trabajo real est hecho por una sesin de mbito Web Bean que mantiene informacin acerca del usuario actualmente conectado y expone la entidad del Usuario a otras Web Beans: @SessionScoped @Named public class Login { @Current Credentials credentials; @PersistenceContext EntityManager userDatabase; private User user; public void login() { List<User > results = userDatabase.createQuery(

"select u from User u where u.username=:username and u.password=:pass word") .setParameter("username", credentials.getUsername()) .setParameter("password", credentials.getPassword()) .getResultList(); if ( !results.isEmpty() ) { user = results.get(0); } } public void logout() { user = null; } public boolean isLoggedIn() { return user!=null; } @Produces @LoggedIn User getCurrentUser() { return user; } } Obviamente, @LoggedIn es una anotacin de enlace: @Retention(RUNTIME) @Target({TYPE, METHOD, FIELD}) @BindingType public @interface LoggedIn {}

Ahora, cualquier otro Web Bean puede fcilmente inyectar al usuario actual: public class DocumentEditor { @Current Document document; @LoggedIn User currentUser; @PersistenceContext EntityManager docDatabase; public void save() { document.setCreatedBy(currentUser); docDatabase.persist(document); } }

LINKOGRAFIA

http://www.programacion.com/articulo/introduccion_a_la_tecnologia_javaserver_fa ces_233/6 http://docs.jboss.org/webbeans/reference/current/es-ES/html/example.html http://es.scribd.com/doc/38097197/19/Modelo-de-navegacion http://es.wikipedia.org/wiki/JavaServer_Faces http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=IntroduccionJSFJ ava

También podría gustarte