You are on page 1of 53

DEPARTAMENTO DE SISTEMAS

Contenedores y JavaServer Faces

DEPARTAMENTO DE SISTEMAS

Introduccin

Introduccin
DEPARTAMENTO DE SISTEMAS

Java Server Faces


o o o o

Framework Java para la construccin de interfaces de usuario para aplicaciones Web La especificacin fue creada por:

Sun, IBM, Oracle, Borland, BEA

Java Specification Request (JSR) 127 2001

Introduccin
DEPARTAMENTO DE SISTEMAS

Basado en los siguientes principios para facilitar el desarrollo Web


o o o o

Centrado en componentes Independencia del cliente Simplificacin del acceso y manejo de datos Basado en patrones arquitecturales para el desarrollo Web

Introduccin
DEPARTAMENTO DE SISTEMAS

Objetivos de diseo de la JSR 127


o

Crear un marco estndar para UI basado en componentes Crear un conjunto liviano de clases para manejar componentes, estado de los componentes y eventos de entrada Proveer un modelo basado en JavaBeans para comunicar eventos de los controles cliente con aplicaciones del lado servidor

DEPARTAMENTO DE SISTEMAS

Tomado de [1] Java Server Faces 2.0 The complete reference

DEPARTAMENTO DE SISTEMAS

Ciclo de Vida de una JSF

JSF
DEPARTAMENTO DE SISTEMAS

El ciclo de vida de una JSF


o

Evento de entrada

Request de una xhtml Evento action en un componente UI Crear o restaurar la vista Aplicar valores de usuario Validar que los valores son vlidos Actualizar el modelo con valores vlidos Localizar una nueva vista de ser necesario Desplegar la vista

JSF Request processing lifecycle


JSF
DEPARTAMENTO DE SISTEMAS

1- Crear o restaurar la vista


o

La vista internamente es representada como un rbol de componentes Representacin espejo de la vista del cliente Si la vista es nueva se crea y se guarda en un contenedor llamado FacesContext

o o

JSF
DEPARTAMENTO DE SISTEMAS

Tomado de [1] Java Server Faces 2.0 The complete reference

10

JSF
DEPARTAMENTO DE SISTEMAS

2- Aplicar valores Request


o o o

Se procesan los valores de entrada del request Cada componente UI en el rbol toma los valores enviados por el cliente En general se tienen dos tipos de componentes

Contenedores de valores

Text field Check box Label Botn Link


11

No contenedores de valores

JSF
DEPARTAMENTO DE SISTEMAS

Tomado de [1] Java Server Faces 2.0 The complete reference

12

JSF
DEPARTAMENTO DE SISTEMAS

3- Procesar Validaciones
o

Se realiza la conversin y validacin de los datos Si un componente falla en la validacin pone su propiedad valid en false Un mensaje FacesMessage es encolado en el FacesContext

13

JSF
DEPARTAMENTO DE SISTEMAS

Tomado de [1] Java Server Faces 2.0 The complete reference

14

JSF
DEPARTAMENTO DE SISTEMAS

4- Actualizar los valores del modelo


o

Si los datos pasan la validacin y conversin, los datos son asignados a los componentes La actualizacin se realiza sobre el modelo, es decir sobre los ManagedBeans

15

JSF
DEPARTAMENTO DE SISTEMAS

Tomado de [1] Java Server Faces 2.0 The complete reference

16

JSF
DEPARTAMENTO DE SISTEMAS

5- Invocacin de aplicaciones
o

Asociado a los componentes UI que no tienen datos El componente se convierte en fuente de un evento para la invocacin de una aplicacin o cdigo

17

JSF
DEPARTAMENTO DE SISTEMAS

Tomado de [1] Java Server Faces 2.0 The complete reference

18

JSF
DEPARTAMENTO DE SISTEMAS

6- Desplegar Respuesta
o o

Ultima actividad en el ciclo de respuesta Se ejecuta un llamado en cascada a todos los componentes del rbol Se almacena el estado actual del rbol para futuros llamados

19

JSF
DEPARTAMENTO DE SISTEMAS

Tomado de [1] Java Server Faces 2.0 The complete reference

20

DEPARTAMENTO DE SISTEMAS

Plantillas

21

Facelets
DEPARTAMENTO DE SISTEMAS

Representan un mecanismo de plantillas del lado servidor Promueven la reutilizacin Permiten implementar la vista mediante varios archivos fsicos Diseado pensando en JSFs Proveen un mecanismo de declaracin utilizando XHTML Favorece el patrn MVC
22

Facelets
DEPARTAMENTO DE SISTEMAS

Existen dos elementos principales en la utilizacin de Facelets


o o

Template Client

El Cliente tiene como nombre el identificador de la vista


o

Ejemplo: inicio.xhtml

Un cliente puede utilizar varios templates Mediante los facelets se promueve la reutilizacin de pginas
23

Facelets
DEPARTAMENTO DE SISTEMAS

24

Tomado de [1] Java Server Faces 2.0 The complete reference

Facelets
DEPARTAMENTO DE SISTEMAS

Tomado de [1] Java Server Faces 2.0 The complete reference

25

DEPARTAMENTO DE SISTEMAS

Backing Beans / Managed Beans

26

Backing Beans
DEPARTAMENTO DE SISTEMAS

Clases JAVA (Java Beans) Su propsito es separar los componentes UI de los objetos que ejecutan el procesamiento y mantienen los datos Facilitan la comunicacin entre los beans reales de la aplicacin y la UI. Responsabilidades
o o o

Interactan con el modelo Escuchan eventos de la vista Dan respuesta a las solicitudes

27

DEPARTAMENTO DE SISTEMAS

Backing Beans

Getters y setters para sus propiedades Mtodos de accin


o o

eventos de la capa web implementados en mtodos de los beans. actions


Ejecutan acciones sobre el modelo y dejan los resultados en los atributos del bean siempre termina con una regla de navegacin (por lo que se entiende que un action tiene tipo de retorno String) Mtodo para poblar informacin antes de cargar un jsp recibe un evento como parmetro y no retorna nada
28

action listeners

Uso de un Web Bean en un JSP (para visualizar un attr) < value =#{bookListBean.books}/>

DEPARTAMENTO DE SISTEMAS

Backing Beans

Getters y setters para sus propiedades Mtodos de accin


o o

eventos de la capa web implementados en mtodos de los beans. actions


Ejecutan acciones sobre el modelo y dejan los resultados en los atributos del bean siempre termina con una regla de navegacin (por lo que se entiende que un action tiene tipo de retorno String) Mtodo para poblar informacin antes de cargar un jsp recibe un evento como parmetro y no retorna nada
29

action listeners

Uso de un Web Bean en un JSP (para visualizar un attr) < value =#{bookListBean.books}/>

Backing Beans
DEPARTAMENTO DE SISTEMAS

El Backing Bean define propiedades y mtodos que son asociados con los componentes UI usados en la pgina. En el ejemplo el valor de entrada del componente se mantendr en la propiedad useNumber del Backing Bean UserNumberBean. <h:inputText id="userNo" label="User Number" value="#{UserNumberBean.userNumber}"> ... </h:inputText>

30

DEPARTAMENTO DE SISTEMAS

Backing Beans

31

Backing Beans
DEPARTAMENTO DE SISTEMAS

32

Backing Beans
DEPARTAMENTO DE SISTEMAS

Configuracin de un Bean
JavaServer Faces soporta la administracin de bean y permite realizar: o Configurar beans o Inicializar las propiedades de los bean con valores determinados o Mantener los beans en un mbito o Exponer los beans para que puedan ser accedidos.

33

Backing Beans
DEPARTAMENTO DE SISTEMAS

Los beans se configuran en el archivo facesconfig.xml. Este archivo es procesado cuando la aplicacin inicia, si una pgina hace referencia a un bean, la implementacin JavaServer Faces inicializa de acuerdo a su configuracin en este archivo. Los beans se pueden crear usando elementos managed-bean, los cuales representan una instancia de una clase bean que debe existir en la aplicacin. En tiempo de ejecucin JSF implementa procesos para el managed-bean.

34

Backing Beans
DEPARTAMENTO DE SISTEMAS

Ejemplo Declaracin de Managed-Bean


<managed-bean> <managed-bean-name>UserNumberBean</managed-beanname> <managed-bean-class>guessNumber.UserNumberBean</ 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> </managed-bean>

35

Backing Beans
DEPARTAMENTO DE SISTEMAS

Cada managed-bean contiene las siguientes propiedades:


o

Managed-bean-name: es nico y se mantiene en el mbito de la aplicacin. Este nombre debe coincidir con el valor que se utiliza en las pginas para invocar el bean Managed-bean-class: define el nombre completo de la clase componente JavaBeans utilizados para crear una instancia del bean Managed-bean-scope: define el mbito en el cual el bean ser almacenado (request, session, application, none)

El managed-bean contiene el elemento property-name, la cual debe coincidir con el nombre de la propiedad correspondiente en el bean. El valor que se define debe ser el mismo de la propiedad.

36

DEPARTAMENTO DE SISTEMAS

JSF Expression Language (EL)

37

JSF Expression Language


DEPARTAMENTO DE SISTEMAS

Se utilizan delimitadores
o o

#{ } <h:outputText value=#{userBean.firstName}/> Llamado del mtodo getFirstName() <h:inputText value={userBean.firstName}/>

Uso
o o o

38

EL
DEPARTAMENTO DE SISTEMAS

Otros operadores
o o o o

Aritmticos Relacin Lgicos Condicionales

39

DEPARTAMENTO DE SISTEMAS

Navegacin

40

Navegacin
DEPARTAMENTO DE SISTEMAS

El modelo de navegacin de JavaServer Faces facilita definir la navegacin entre pginas y mejorar el procesamiento para elegir la secuencia en la cual las pginas son cargadas. La navegacin es definida con un conjunto de reglas en el archivo faces-congif.xml, para seleccionar la pgina que se debe desplegar, a partir de un evento generado por un componente (botn, link). Tipos de navegacin o Navegacin Esttica o Navegacin Dinmica

41

Navegacin
DEPARTAMENTO DE SISTEMAS

Navegacin Esttica
<h:commandButton label="Login" action="login"/> <navigation-rule> <from-view-id>/index.jsp</from-view-id> <navigation-case> <from-outcome>login</from-outcome> <to-view-id>/welcome.jsp</to-view-id> </navigation-case> </navigation-rule>

42

Navegacin
DEPARTAMENTO DE SISTEMAS

Navegacin Dinmica
o

La navegacin depende de cada usuario y de datos particulares

<h:commandButton label="Login" action="#{loginController.verifyUSer}"/> String verifyUser() { if (...) return "success" else return "failure" }

43

Navegacin
DEPARTAMENTO DE SISTEMAS

Definen la secuencia en que son cargadas las pginas de una aplicacin.

Se deben registrar en el archivo de configuracin faces config.xml

44

Navegacin
DEPARTAMENTO DE SISTEMAS

La navegacin se define en el archivo faces-config.xml Si va a agregar un nuevo archivo de navegacin, se debe incluir en la lista de archivos del web.xml En el faces-config.xml de cada mdulo se deben especificar las clases que implementan los beans y el alcance de cada uno de estos objetos

45

Navegacin
DEPARTAMENTO DE SISTEMAS

Cada vez que se define un action sobre un bean, este debe retornar un String con el que se especifica la regla de navegacin a seguir.

En este ejemplo el caso success es resultado del llamado al mtodo createRole del RoleBean.
46

Navegacin
DEPARTAMENTO DE SISTEMAS

Men de navegacin

incluir dentro del archivo common/jsp/menu.jsp el nuevo elemento

47

Navegacin
DEPARTAMENTO DE SISTEMAS

El faces-config.xml debe incluir las reglas de transicin de los estados del men

48

Navegacin
DEPARTAMENTO DE SISTEMAS

Eventos por Cambio de Valor


<h:selectOneMenu value="{form.country}" onchange="submit()"> valueChangeListener="{form.countryChanged}" <f:selectItems value="{form.countryNames}"> </h:selectOneMenu>

49

Navegacin
DEPARTAMENTO DE SISTEMAS

Eventos de Accin
<h:commandButton image="pan.jpg"> actionListener="#{tienda.listen}" action="#{tienda.act}" </h:commandButton> ------public class Tienda { private String outcome; .... public void listen (ActionEvent e) { FacesContext context = FacesContext.getCurrentInstance(); String clienteId = e.getComponent().getClienteId(context); .... if(...) outcome = "success"; } public String act () { return outcome; } }

50

Navegacin
DEPARTAMENTO DE SISTEMAS

51

DEPARTAMENTO DE SISTEMAS

Ejemplo:

52

Referencias
DEPARTAMENTO DE SISTEMAS

[1] Java Server Faces 2.0 The Complete Reference. The complete reference. Ed Burns, Chris Schalk. McGraw Hill.

53

You might also like