Contenedores y JSF2

53
DEPARTAMENTO DE SISTEMAS Contenedores y JavaServer Faces 1

Transcript of Contenedores y JSF2

Page 1: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 1/53

DEPARTAMENTO DE SISTEMAS

Contenedores y

JavaServer Faces

1

Page 2: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 2/53

DEPARTAMENTO DE SISTEMAS

2

Introducción

Page 3: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 3/53

DEPARTAMENTO DE SISTEMAS

Introducción

•  Java Server Faces

o  Framework Java para la construcción de

interfaces de usuario para aplicaciones Webo  La especificación fue creada por:

  Sun, IBM, Oracle, Borland, BEA

o  Java Specification Request (JSR) 127

o  2001

3

Page 4: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 4/53

DEPARTAMENTO DE SISTEMAS

Introducción

•  Basado en los siguientes principios para

facilitar el desarrollo Web

o  Centrado en componentes

o  Independencia del cliente

o  Simplificación del acceso y manejo de datos

o Basado en patrones arquitecturales para eldesarrollo Web

4

Page 5: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 5/53

DEPARTAMENTO DE SISTEMAS

Introducción

•  Objetivos de diseño de la JSR 127

o  Crear un marco estándar para UI basado en

componentes

o  Crear un conjunto liviano de clases paramanejar componentes, estado de loscomponentes y eventos de entrada

o  Proveer un modelo basado en JavaBeans para

comunicar eventos de los controles cliente conaplicaciones del lado servidor 

5

Page 6: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 6/53

DEPARTAMENTO DE SISTEMAS

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

Page 7: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 7/53

DEPARTAMENTO DE SISTEMAS

7

Ciclo de Vida de una JSF

Page 8: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 8/53

DEPARTAMENTO DE SISTEMAS

JSF

•  El ciclo de vida de una JSF

o  Evento de entrada

  Request de una xhtml

  Evento “action” en un componente UI

o  JSF Request processing lifecycle

  Crear o restaurar la vista

  Aplicar valores de usuario

  Validar que los valores son válidos

  Actualizar el modelo con valores válidos

  Localizar una nueva vista de ser necesario

  Desplegar la vista

8

Page 9: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 9/53

DEPARTAMENTO DE SISTEMAS

JSF

•  1- Crear o restaurar la vista

o  La vista internamente es representada como un

árbol de componentes

o  Representación espejo de la vista del cliente

o  Si la vista es nueva se crea y se guarda en un

contenedor llamado “FacesContext”

9

Page 10: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 10/53

DEPARTAMENTO DE SISTEMAS

JSF

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

Page 11: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 11/53

DEPARTAMENTO DE SISTEMAS

JSF

•  2- Aplicar valores “Request”

o  Se procesan los valores de entrada del request

o  Cada componente UI en el árbol toma los

valores enviados por el cliente

o  En general se tienen dos tipos de componentes

  Contenedores de valores

  Text field

  Check box

  Label

  No contenedores de valores

  Botón

  Link

11

Page 12: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 12/53

DEPARTAMENTO DE SISTEMAS

JSF

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

Page 13: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 13/53

DEPARTAMENTO DE SISTEMAS

JSF

•  3- Procesar Validaciones

o  Se realiza la conversión y validación de los

datos

o  Si un componente falla en la validación pone supropiedad “valid” en “false”

o  Un mensaje “FacesMessage” es encolado en el

“FacesContext”

13

Page 14: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 14/53

DEPARTAMENTO DE SISTEMAS

JSF

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

Page 15: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 15/53

DEPARTAMENTO DE SISTEMAS

JSF

•  4- Actualizar los valores del modelo

o  Si los datos pasan la validación y conversión,

los datos son asignados a los componentes

o  La actualización se realiza sobre el modelo, es

decir sobre los ManagedBeans

15

Page 16: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 16/53

DEPARTAMENTO DE SISTEMAS

JSF

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

Page 17: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 17/53

DEPARTAMENTO DE SISTEMAS

JSF

•  5- Invocación de aplicaciones

o  Asociado a los componentes UI que no tienen

datos

o  El componente se convierte en fuente de un

evento para la invocación de una aplicación ocódigo

17

Page 18: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 18/53

DEPARTAMENTO DE SISTEMAS

JSF

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

Page 19: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 19/53

DEPARTAMENTO DE SISTEMAS

JSF

•  6- Desplegar Respuesta

o  Ultima actividad en el ciclo de respuesta

o  Se ejecuta un llamado en cascada a todos los

componentes del árbol

o  Se almacena el estado actual del árbol para

futuros llamados

19

Page 20: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 20/53

DEPARTAMENTO DE SISTEMAS

JSF

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

Page 21: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 21/53

DEPARTAMENTO DE SISTEMAS

21

Plantillas

Page 22: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 22/53

DEPARTAMENTO DE SISTEMAS

Facelets

•  Representan un mecanismo de plantillas del

lado servidor 

•  Promueven la reutilización

•  Permiten implementar la vista mediantevarios archivos físicos

•  Diseñado pensando en JSFs

•  Proveen un mecanismo de declaración

utilizando XHTML•  Favorece el patrón MVC

22

Page 23: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 23/53

DEPARTAMENTO DE SISTEMAS

Facelets

•  Existen dos elementos principales en la

utilización de Facelets

o  Template

o  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

reutilización de páginas

23

Page 24: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 24/53

DEPARTAMENTO DE SISTEMAS

Facelets

24

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

Page 25: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 25/53

DEPARTAMENTO DE SISTEMAS

Facelets

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

Page 26: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 26/53

DEPARTAMENTO DE SISTEMAS

26

Backing Beans / Managed Beans

Page 27: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 27/53

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  Clases JAVA (Java Beans)

•  Su propósito es separar los componentes UI delos objetos que ejecutan el procesamiento ymantienen los datos

•  Facilitan la comunicación entre los beans reales dela aplicación y la UI.

•  Responsabilidades

o  Interactúan con el modelo

o  Escuchan eventos de la vista

o  Dan respuesta a las solicitudes

27

Page 28: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 28/53

DEPARTAMENTO DE SISTEMAS

28

•  Getters y setters para sus propiedades

•  Métodos de acción

o  eventos de la capa web implementados en métodos de losbeans.

o  actions

  Ejecutan acciones sobre el modelo y dejan los resultadosen los atributos del bean

  siempre termina con una regla de navegación (por lo quese entiende que un action tiene tipo de retorno String)

o  action listeners

  Método para poblar información antes de cargar un jsp

  recibe un evento como parámetro y no retorna nada

Uso de un Web Bean en un JSP (para visualizar un attr)

< ……… value =“#{bookListBean.books}” />

Backing Beans

Page 29: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 29/53

DEPARTAMENTO DE SISTEMAS

29

•  Getters y setters para sus propiedades

•  Métodos de acción

o  eventos de la capa web implementados en métodos de losbeans.

o  actions

  Ejecutan acciones sobre el modelo y dejan los resultadosen los atributos del bean

  siempre termina con una regla de navegación (por lo quese entiende que un action tiene tipo de retorno String)

o  action listeners

  Método para poblar información antes de cargar un jsp

  recibe un evento como parámetro y no retorna nada

Uso de un Web Bean en un JSP (para visualizar un attr)

< ……… value =“#{bookListBean.books}” />

Backing Beans

Page 30: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 30/53

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  El Backing Bean define propiedades y métodos que

son asociados con los componentes UI usados en

la página. En el ejemplo el valor de entrada delcomponente se mantendrá en la propiedad

useNumber del Backing Bean UserNumberBean.

<h:inputText id="userNo" label="User Number"

value="#{UserNumberBean.userNumber}">

...</h:inputText>

30

Page 31: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 31/53

DEPARTAMENTO DE SISTEMAS

31

Backing Beans

Page 32: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 32/53

DEPARTAMENTO DE SISTEMAS

Backing Beans

32

Page 33: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 33/53

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  Configuración de un Bean

JavaServer Faces soporta la administración 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

Page 34: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 34/53

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  Los beans se configuran en el archivo faces-config.xml. Este archivo es procesado cuando laaplicación inicia, si una página hace referencia a unbean, la implementación JavaServer Faces inicializade acuerdo a su configuración en este archivo.

•  Los beans se pueden crear usando elementosmanaged-bean, los cuales representan una instanciade una clase bean que debe existir en la aplicación.En tiempo de ejecución JSF implementa procesospara el managed-bean.

34

Page 35: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 35/53

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  Ejemplo Declaración de Managed-Bean<managed-bean>

<managed-bean-name>UserNumberBean</managed-bean-

name>

<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

Page 36: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 36/53

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  Cada managed-bean contiene las siguientes propiedades:

o  Managed-bean-name: es único y se mantiene en el ámbito de la

aplicación. Este nombre debe coincidir con el valor que se utiliza

en las páginas para invocar el bean

o  Managed-bean-class: define el nombre completo de la clase

componente JavaBeans utilizados para crear una instancia del

bean

o  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 correspondienteen el bean. El valor que se define debe ser el mismo de la

propiedad.

36

Page 37: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 37/53

DEPARTAMENTO DE SISTEMAS

37

JSF Expression Language (EL)

Page 38: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 38/53

DEPARTAMENTO DE SISTEMAS

JSF Expression Language

•  Se utilizan delimitadores

o  #{

o  }

• 

Usoo  <h:outputText value=“#{userBean.firstName}”/>

o  Llamado del método getFirstName()

o  <h:inputText value=“{userBean.firstName}”/>

38

Page 39: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 39/53

DEPARTAMENTO DE SISTEMAS

EL

•  Otros operadores

o  Aritméticos

o  Relación

o  Lógicos

o  Condicionales

39

Page 40: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 40/53

DEPARTAMENTO DE SISTEMAS

40

Navegación

Page 41: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 41/53

DEPARTAMENTO DE SISTEMAS

Navegación

•  El modelo de navegación de JavaServer Faces facilita definir lanavegación entre páginas y mejorar el procesamiento para elegir la

secuencia en la cual las páginas son cargadas.

•  La navegación es definida con un conjunto de reglas en el archivo

faces-congif.xml, para seleccionar la página que se debe desplegar,a partir de un evento generado por un componente (botón, link).

•  Tipos de navegación

o  Navegación Estática

o Navegación Dinámica

41

Page 42: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 42/53

DEPARTAMENTO DE SISTEMAS

Navegación

•  Navegación Estática

<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

Page 43: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 43/53

DEPARTAMENTO DE SISTEMAS

Navegación

•  Navegación Dinámica

o  La navegación depende de cada usuario y de

datos particulares

<h:commandButton label="Login" action="#{loginController.verifyUSer}"/>

String verifyUser() {

if (...)return "success"

elsereturn "failure"

}

43

Page 44: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 44/53

DEPARTAMENTO DE SISTEMAS

•  Definen la secuencia en que son cargadas las páginasde una aplicación.

•  Se deben registrar en el archivo de configuración

faces – config.xml

Navegación

44

Page 45: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 45/53

DEPARTAMENTO DE SISTEMAS

45

Navegación

•  La navegación se define en el archivo faces-config.xml

•  Si va a agregar un nuevo archivo de navegación, se debeincluir en la lista de archivos del web.xml 

•  En el faces-config.xml de cada módulo se deben especificar las clases que implementan los beans y el alcance de cada

uno de estos objetos

Page 46: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 46/53

DEPARTAMENTO DE SISTEMAS

46

Navegación

•  Cada vez que se define un action sobre un bean, este deberetornar un String con el que se especifica la regla denavegación a seguir.

•  En este ejemplo el caso “success” es resultado del llamado almétodo createRole del RoleBean.

Page 47: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 47/53

DEPARTAMENTO DE SISTEMAS

47

Navegación

•  Menú de navegación

•  incluir dentro del archivo common/jsp/menu.jsp el

nuevo elemento

Page 48: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 48/53

DEPARTAMENTO DE SISTEMAS

48

Navegación

•  El faces-config.xml debe incluir las reglas detransición de los estados del menú

Page 49: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 49/53

DEPARTAMENTO DE SISTEMAS

Navegación

•  Eventos por Cambio de Valor 

<h:selectOneMenu value="{form.country}" onchange="submit()">

valueChangeListener="{form.countryChanged}"

<f:selectItems value="{form.countryNames}"></h:selectOneMenu>

49

Page 50: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 50/53

DEPARTAMENTO DE SISTEMAS

Navegación

•  Eventos de Acción

<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

Page 51: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 51/53

DEPARTAMENTO DE SISTEMAS

51

Navegación

Page 52: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 52/53

DEPARTAMENTO DE SISTEMAS

52

Ejemplo:

Page 53: Contenedores y  JSF2

8/3/2019 Contenedores y JSF2

http://slidepdf.com/reader/full/contenedores-y-jsf2 53/53

DEPARTAMENTO DE SISTEMAS

Referencias

•  [1] Java Server Faces 2.0 The Complete

Reference. The complete reference. EdBurns, Chris Schalk. McGraw Hill.

53