SlideShare una empresa de Scribd logo
1 de 52
JAVASERVER FACES
(JSF)
NATALIA HERRERA REY
DANIEL OCHOA
WILLIAM MUNEVAR
ENRIQUE ALCOCER
TEMARIO
● ¿Qué es una aplicación JavaServer Faces?
● Versiones
● Características principales
● Facelets y JSP
● Estructura
● Modelo Vista Controlador en JSF
● Ciclo de vida de una página JavaServer Faces
● Managed Beans, navegación y etiquetas básicas JSF
● Etiquetas JSF estándares
● Conversión y validación
● Manejo de Eventos
● Extensiones
● Ejemplo
JavaServer Faces JSF
● Framework para aplicaciones
Java basadas en web
● Contiene todo lo necesario
para la gestión de eventos y la
organización de los
componentes
Características
Elementos principales:
● Juego de componentes UI (Interfaz de
Usuario).
● Modelo de programación a eventos.
● Modelo de componentes que permite
suministrar elementos adicionales de
terceros.
Características
● JSF es una especificación y no un producto,
no está sujeto a un solo proveedor.
● Posee una clara separación entre el
comportamiento y la presentación en las
aplicaciones.
● Desarrolla la vista más cercano al estilo de
Java Swing, Visual Basic ó Delphi.
Versiones
Versiones Descripción Fecha
Lanzamiento
JSF 1.0
Versión inicial de la especificación JSF, independiente y
no forma parte de Java EE
11/03/2004
JSF 1.1
Mantenimiento y correcciones de la versión anterior, no se
agregan nuevas características
02/05/2004
JSF 1.2 Mejoras en el sistema y API. Adopción inicial en Java EE 11/05/2006
JSF 2.0
Versión principal para facilidad de uso, funcionalidad y
rendimiento mejorados, coincide con Java EE 6
28/06/2009
JSF 2.1
Versión de mantenimiento de la 2.0, solo cambios
mínimos en las especificaciones
22/10/2010
JSF 2.2 Versión actual, Introduce soporte HTML5 16/04/2013
JSP y Facelets
● Base HTML
● Incrusta contenido
JAVA
● Genera contenido
de páginas web
● Mas reciente que JSP
● Incorpora modulos de código JAVA
● MVC
Estructura
Estructura Proyecto Web
(NetBeans)
Estructura Archivo .war
Modelo Vista Controlador en JSF
Modelo
Managed Beans
● Responsables de la lógica de la aplicación
● Eventos generados por los componentes
● Navegación entre páginas
Vista
Páginas
JSF
(ficheros
JSP con las
tag libraries
de JSF)
Facelets
(ficheros
xhtml)
<h:inputText value="#{usuario.nombre}"/>
Unified Expresion Language
Controlador
web.xml
(Faces Servlet)
<web-app>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Controlador
faces-config.xml
(reglas de
navegación)
<navigation-rule>
<from-view-id>/index.jsp</from-view-
id>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/hola.jsp</to-view-id>
</navigation-case>
</navigation-rule>
Ciclo de Vida Estándar de Procesamiento
de Peticiones
Escenarios de una Petición
Respuesta
Faces
Respuesta
No-Faces
Petición
Faces
Petición
No-Faces
Escenarios de una Petición
Escenario 1
Escenario 3
Escenario 2
Petición No-Faces
Respuesta Faces
Petición Faces
Respuesta No -Faces
Petición Faces
Respuesta No-Faces
Bean
Un bean es un POJO (Plain
Old Java Object), algo tan
sencillo como una clase que
tiene un constructor público
sin argumentos (constructor
por defecto) y sus
propiedades tienen asociados
sus correspondientes
métodos get/set .
Managed Beans
Un Managed Bean es un Java Bean que
puede ser accedido desde una página JSF,
cada Managed Bean debe tener un nombre y
un ámbito.
Managed Beans
Diferentes usuarios de la aplicación web
tienen diferentes instancias del Managed
Bean. En ellos se colocará la lógica de
negocio y se encargan de conectar los
campos de una página JSF con atributos del
Managed Bean.
¿Cómo declaramos un bean?
Desde el fichero faces-config.xml o con
anotaciones.
En JSF 1.x era necesario declarar el managed
bean en el fichero faces-config.xml, en JSF
2.0 no es necesario, con la anotación es
suficiente.
Utilizando 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>
El archivo de configuración más comúnmente usado es
WEB-INF/faces-config.xml.
Utilizando anotaciones
package com.examples;
import javax.faces.bean.ManagedBean
import javax.faces.bean.SessionScoped@ManagedBean
@SessionScoped
public class UserBean {...}
@ManagedBean(name="user")
@SessionScoped
public class UserBean {...}
Ámbitos de los beans
@RequestScoped ámbito de petición, al terminar la
petición se elimina la instancia del bean.
@SessionScoped ámbito de sesión, mientras la sesión
exista existe el bean.
@ViewScoped: entre request y session, el bean existirá
mientras la petición se envíe a la misma vista.
@ApplicationScoped ámbito de la aplicación web,
mientras la aplicación se ejecute el bean existirá.
Navegación
Navegación estática: La navegación más sencilla en
JSF consiste en asociar un String al action de un
botón o link:
Navegación
Navegación dinámica: Si queremos poder elegir la
página a mostrar en tiempo de ejecución, asociamos
el action a un método que nos devuelva el String
correspondiente:
Reglas de navegación
¿Cómo asociamos el String del action con una
página JSF? Creando reglas de navegación en el
fichero faces-config.xml:
Reglas de navegación
¿Tenemos que utilizar obligatoriamente faces-
config.xml?
No. Desde JSF 2.0 podemos utilizar navegación
implícita, es decir, nos basta con poner en el action el
nombre de nuestra página JSF sin la extensión
correspondiente.
<h:commandButton action="login"/> nos
Etiquetas básicas
Las páginas JSF tienen una estructura similar a esto:
Etiquetas core, se usan, entre otras aplicaciones, para
manejo de eventos, atributos, conversión de datos,
validadores, recursos y definición de la página, las
cuales usan el prefijo f.
Etiquetas html_basic, su utilización es básicamente
para la construcción de formularios y demás
elementos de interfaz de usuario, que usa el prefijo h.
Etiquetas básicas
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 botón, o
compuesto, como una tabla, que puede estar
compuesta por varios componentes.
Componentes de interfaz de usuario
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.
Conjunto de clases UI
● UICommand: Representa un control que dispara actions cuando se activa.
● UIForm: Encapsula un grupo de controles que envían datos de la aplicación. Este
componente es análogo 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 página.
● UIPanel: Muestra una tabla.
● UISelectItem: Representa un sólo í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, selececcionándolo o deseleccionándolo. 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.
Etiquetas básicas y componentes
UIForm
<h:form … </h:form>
UIGraphic
<h:graphicImage
url="/imagenes/duke.jpg"/
>
UICommand
<h:commandButton
value="Aceptar"
action="siguiente"/>
UISelectBoolean
<h:selectBooleanCheckbox
value="#{formulario.recibirIn
formacion}"/>
Etiquetas básicas y componentes
UIInput
<h:inputText
value="#{formulario.nombre}"/
> <h:inputTextarea rows="3"
cols="15"
value="Escribir aqui.."/>
<h:inputSecret
value="#{formulario.password}"/>
Etiquetas básicas y componentes
UIOutput
<h:outputText
value="Hola Mundo!"/>
<h:outputLink
value="http://www.hoylodejo.com/">
<h:outputText value="Clic aquí"/>
</h:outputLink>
Etiquetas básicas y componentes
UISelectMany
<h:selectManyCheckbox value="#{formulario.aficiones}">
<f:selectItem itemValue="musica" itemLabel="Música"/>
<f:selectItem itemValue="cine" itemLabel="Cine"/>
<f:selectItem itemValue="pesca" itemLabel="Pesca"/>
<f:selectItem itemValue="deporte" itemLabel="Deporte"/>
<f:selectItem itemValue="lectura" itemLabel="Lectura"/>
</h:selectManyCheckbox>
Etiquetas básicas y componentes
UISelectMany
<h:selectManyListbox value="#{formulario.lenguajes}">
<f:selectItem itemValue="c" itemLabel="C"/>
<f:selectItem itemValue="c++" itemLabel="C++"/>
<f:selectItem itemValue="java" itemLabel="Java"/>
<f:selectItem itemValue="Visual basic"
itemLabel="Visual
basic"/>
</h:selectManyListbox>
Etiquetas básicas y componentes
UISelectMany
<h:selectManyMenu value="#{cuestionario.comidas}">
<f:selectItem itemValue="carnes" itemLabel="Carnes"/>
<f:selectItem itemValue="pescados" itemLabel="Pescados"/>
<f:selectItem itemValue="legumbres"
itemLabel="Legumbres"/>
<f:selectItem itemValue="pastas" itemLabel="Pastas"/>
<f:selectItem itemValue="sopas" itemLabel="Sopas"/>
</h:selectManyMenu>
Etiquetas básicas y componentes
UISelectOne
<h:selectOneRadio value="#{formulario.fumador}">
<f:selectItem itemValue="si" itemLabel="Fumador"/>
<f:selectItem itemValue="no" itemLabel="No fumador"/>
</h:selectOneRadio>
<h:selectOneMenu value="#{formulario.sistema}">
<f:selectItem itemValue="linux" itemLabel="Linux"/>
<f:selectItem itemValue="windows" itemLabel="Windows"/>
</h:selectOneMenu>
Etiquetas básicas y componentes
UISelectOne
<h:selectOneListbox value="#{cuestionario.estado}">
<f:selectItem itemValue="soltero" itemLabel="Soltero"/>
<f:selectItem itemValue="casado" itemLabel="Casado"/>
<f:selectItem itemValue="divorciado"
itemLabel="Divorciado"/>
<f:selectItem itemValue="separado" itemLabel="Separado"/>
</h:selectOneListbox>
Etiquetas básicas y componentes
UIPanel
<h:panelGrid columns="3" border="1">
<h:outputText value="(1,1)"/>
<h:outputText value="(1,2)"/>
<h:outputText value="(1,3)"/>
<h:outputText value="(2,1)"/>
<h:outputText value="(2,2)"/>
<h:outputText value="(2,3)"/>
<h:panelGroup>
<h:outputText value="Columna 1"/>
<h:outputText value="Columna 2"/>
</h:panelGroup>
</h:panelGrid>
Conversión
Conversión
<h:inputText id="fecha" value="#{pago.fecha}">
<f:convertDateTime pattern="MM/yyyy"/>
</h:inputText>
<h:outputText value="#{pago.cantidad}">
<f:convertNumber type="currency"/>
</h:outputText>
<h:inputText id="cantidad" value="#{pago.cantidad}">
<f:convertNumber minFractionDigits="2"/>
</h:inputText>
Conversión f:convetDateTime
Conversión a f:convetNumber
Mensajes
<h:inputText id="cantidad" value="#{pago.cantidad}">
<h:message for="cantidad"/>
<h:message for="cantidad" showSummary="true" showDetail="false"/>
<h:messages styleClass="mensajeError"/>
o
<h:message for="cantidad" style="color:red"/>
<faces-config> <application>
<message-bundle>mensajes</message-bundle>
</application>...</faces-config>
Validación
● <h:inputText value="#{cuestionario.nombre}">
<f:validateLength maximum="12"/> </h:inputText>
● <h:inputText value="#{regalo.cantidad}">
<f:validateLongRange minimum="10" maximum="10000"/> </h:inputText>
● <h:inputText value="#{informe.telefono}" required="true"/>
<f:validateLength minimum="9"/> </h:inputText>
Manejo de Eventos
JSF soportar tres clases
de eventos
● Eventos de Acción
● Eventos de Cambio de
Valor
● Eventos de Fase
Manejo de Eventos Eventos de Acción
public class Zodiaco {
public void oyente(ActionEvent e) {
FacesContext context =
FacesContext.getCurrentInstance();
String clientId =
e.getComponent().getClientId(context);
Map requestParams =
context.getExternalContext().getRequest
ParameterMap(); . . . .
public String accion() {
return resultado; . . . .
<f:view>
<head>
<f:loadBundle basename="mensajes"
var="msjs"/>
</head>
<body>
<h:form>
<h:commandButton image="zodiaco.jpg"
actionListener="#{zodiaco.oyente}"
action="#{zodiaco.accion}"/>
</h:form>
</f:view>
Manejo de Eventos Eventos de cambio de valor
<h:outputText
value="#{msjs.nacionalidad}"/>
<h:selectOneMenu
value="#{formulario.nacionalidad}"
onchange="submit()"
valueChangeListener="#{formulario.
cambioNacionalidad}">
<f:selectItems
value="#{formulario.nacionalidade
s}"/>
</h:selectOneMenu>
</h:panelGrid>
public class Formulario {
public Collection getNacionalidades() {
public void cambioNacionalidad
(ValueChangeEvent evento) {
FacesContext contexto =
FacesContext.getCurrentInstance();
if(US.equals((String) evento.getNewValue()))
contexto.getViewRoot().setLocale(Locale.US);
else
contexto.getViewRoot().setLocale(Locale.get
Default());
Manejo de Eventos Eventos de Fase
La implementación JSF dispara eventos conocidos como eventos de fase, antes
y después de cada fase del ciclo de vida
<faces-config> <lifecycle>
<phase-listener>eventoFase</phase-listener>
</lifecycle> </faces-config>
Los oyentes de fase por medio de la interfaz PhaseListener del paquete
javax.faces.event. Esa interfaz define tres métodos:
• PhaseId getPhaseId()
• void afterPhase(PhaseEvent)
• void beforePhase(PhaseEvent)
Extensiones
● RichFaces Agrega componentes visuales y soporte para AJAX.
● ICEfaces Contiene diversos componentes para interfaces de usuarios más enriquecidas,
tales como editores de texto enriquecidos, reproductores de multimedia, entre otros.
● jQuery4jsf Contiene diversos componentes sobre la base de uno de los más populares
framework javascript jQuery.
● PrimeFaces Es una librería muy liviana, todas las decisiones hechas son basadas en
mantener a PrimeFaces lo más liviano posible. PrimeFaces es una librería muy simple que
no necesita dependencias y configuraciones.
● OpenFaces Librería open source que contiene diferentes componentes JSF, un Framework
Ajax y un Framework de validación por parte del cliente.
Referencias
● Oracle.JavaServer Faces Technology. [Fecha de consulta: 25 de Abril de 2014]. [On line].
Disponible: http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html
● Master del Web.Tutorial de JavaServer Faces. [Fecha de consulta: 20 de Abril de 2014].
[On line].
● Disponible: http://elmasterdelaweb.wikispaces.com/file/view/JSF.pdf/179740185/JSF.pdf
● Proyecto Mar. Java Server Faces. [Fecha de consulta: 20 de Abril de 2014]. [On line].
Disponible:
http://proyectoremar.tripod.com/Documentos/Herramientas/JavaServerFaces.pdf
● Wikipedia. JavaServer Faces. [Fecha de consulta: 05 de Mayol de 2014]. [On line].
Disponible: http://es.wikipedia.org/wiki/JavaServer_Faces
● Geary,David. Horstmann,Cay. (2010). Core Java Server Faces 3rd edition. Prentices Hall.
● Leonard,Anghel.(2010).JSF 2.0 Cookbook. Packt Publishing
● Lok Tong,Kent Ka .(2009). Beginning JSF™ 2 APIs and JBoss® Seam. Apress
● Burns,Ed. Schalk, Chris.(2010).JavaServer Faces 2.0: The Complete Reference. McGraw-
Hill

Más contenido relacionado

La actualidad más candente (20)

Maven
MavenMaven
Maven
 
Spring aop
Spring aopSpring aop
Spring aop
 
Spring framework in depth
Spring framework in depthSpring framework in depth
Spring framework in depth
 
Programación I 2. Arquitectura de Capas
Programación I 2. Arquitectura de CapasProgramación I 2. Arquitectura de Capas
Programación I 2. Arquitectura de Capas
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Learn react-js
Learn react-jsLearn react-js
Learn react-js
 
Cuestionario java
Cuestionario java Cuestionario java
Cuestionario java
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Metamodelo UML
Metamodelo UMLMetamodelo UML
Metamodelo UML
 
Introduction to mvc architecture
Introduction to mvc architectureIntroduction to mvc architecture
Introduction to mvc architecture
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Arquitectura REST
Arquitectura RESTArquitectura REST
Arquitectura REST
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018
 
Diapositivas sobre AWT
Diapositivas sobre AWTDiapositivas sobre AWT
Diapositivas sobre AWT
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentation
 
Introducing Swagger
Introducing SwaggerIntroducing Swagger
Introducing Swagger
 

Similar a Javaserver Faces (jsf)

Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
1 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_11 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_1josezapana
 
[ES] Desarrollo de aplicaciones con Java Server Faces
[ES] Desarrollo de aplicaciones con Java Server  Faces[ES] Desarrollo de aplicaciones con Java Server  Faces
[ES] Desarrollo de aplicaciones con Java Server FacesEudris Cabrera
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación JavaAntonio Contreras
 
9 tecnologías v1.1
9 tecnologías v1.19 tecnologías v1.1
9 tecnologías v1.1UTN
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver FulgueraJavier Oliver Fulguera
 
DISEÑO DE APLICACIONES WEB (INTRODUCCION)
DISEÑO DE APLICACIONES WEB (INTRODUCCION)DISEÑO DE APLICACIONES WEB (INTRODUCCION)
DISEÑO DE APLICACIONES WEB (INTRODUCCION)René Pilataxi
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006Samuel Marrero
 

Similar a Javaserver Faces (jsf) (20)

06. jsf (java server faces) (1)
06. jsf (java server faces) (1)06. jsf (java server faces) (1)
06. jsf (java server faces) (1)
 
01 introducción
01 introducción01 introducción
01 introducción
 
Frameworks J2EE
Frameworks J2EEFrameworks J2EE
Frameworks J2EE
 
Jsf jpa-y-hibernate-capitulo-01
Jsf jpa-y-hibernate-capitulo-01Jsf jpa-y-hibernate-capitulo-01
Jsf jpa-y-hibernate-capitulo-01
 
Jsf jpa-y-hibernate-capitulo-02
Jsf jpa-y-hibernate-capitulo-02Jsf jpa-y-hibernate-capitulo-02
Jsf jpa-y-hibernate-capitulo-02
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
1 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_11 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_1
 
[ES] Desarrollo de aplicaciones con Java Server Faces
[ES] Desarrollo de aplicaciones con Java Server  Faces[ES] Desarrollo de aplicaciones con Java Server  Faces
[ES] Desarrollo de aplicaciones con Java Server Faces
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación Java
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 
9 tecnologías v1.1
9 tecnologías v1.19 tecnologías v1.1
9 tecnologías v1.1
 
Arquitectura java web
Arquitectura java webArquitectura java web
Arquitectura java web
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
 
Intro jsf
Intro jsfIntro jsf
Intro jsf
 
DISEÑO DE APLICACIONES WEB (INTRODUCCION)
DISEÑO DE APLICACIONES WEB (INTRODUCCION)DISEÑO DE APLICACIONES WEB (INTRODUCCION)
DISEÑO DE APLICACIONES WEB (INTRODUCCION)
 
Expo
ExpoExpo
Expo
 
Exposicion JSF
Exposicion JSFExposicion JSF
Exposicion JSF
 
Tecnologias web
Tecnologias webTecnologias web
Tecnologias web
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
 

Último

clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinosDayanaCarolinaAP
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Dr. Edwin Hernandez
 
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxvalenciaespinozadavi1
 
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOLUISDAVIDVIZARRETARA
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptCRISTOFERSERGIOCANAL
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdfCristhianZetaNima
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrialGibranDiaz7
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.pptoscarvielma45
 
Ingeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedicaIngeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedicaANACENIMENDEZ1
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLdanilojaviersantiago
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfIvanRetambay
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfalexquispenieto2
 

Último (20)

clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinos
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...
 
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
 
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrial
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
Ingeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedicaIngeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedica
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdf
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdf
 

Javaserver Faces (jsf)

  • 1. JAVASERVER FACES (JSF) NATALIA HERRERA REY DANIEL OCHOA WILLIAM MUNEVAR ENRIQUE ALCOCER
  • 2. TEMARIO ● ¿Qué es una aplicación JavaServer Faces? ● Versiones ● Características principales ● Facelets y JSP ● Estructura ● Modelo Vista Controlador en JSF ● Ciclo de vida de una página JavaServer Faces ● Managed Beans, navegación y etiquetas básicas JSF ● Etiquetas JSF estándares ● Conversión y validación ● Manejo de Eventos ● Extensiones ● Ejemplo
  • 3. JavaServer Faces JSF ● Framework para aplicaciones Java basadas en web ● Contiene todo lo necesario para la gestión de eventos y la organización de los componentes
  • 4. Características Elementos principales: ● Juego de componentes UI (Interfaz de Usuario). ● Modelo de programación a eventos. ● Modelo de componentes que permite suministrar elementos adicionales de terceros.
  • 5. Características ● JSF es una especificación y no un producto, no está sujeto a un solo proveedor. ● Posee una clara separación entre el comportamiento y la presentación en las aplicaciones. ● Desarrolla la vista más cercano al estilo de Java Swing, Visual Basic ó Delphi.
  • 6. Versiones Versiones Descripción Fecha Lanzamiento JSF 1.0 Versión inicial de la especificación JSF, independiente y no forma parte de Java EE 11/03/2004 JSF 1.1 Mantenimiento y correcciones de la versión anterior, no se agregan nuevas características 02/05/2004 JSF 1.2 Mejoras en el sistema y API. Adopción inicial en Java EE 11/05/2006 JSF 2.0 Versión principal para facilidad de uso, funcionalidad y rendimiento mejorados, coincide con Java EE 6 28/06/2009 JSF 2.1 Versión de mantenimiento de la 2.0, solo cambios mínimos en las especificaciones 22/10/2010 JSF 2.2 Versión actual, Introduce soporte HTML5 16/04/2013
  • 7. JSP y Facelets ● Base HTML ● Incrusta contenido JAVA ● Genera contenido de páginas web ● Mas reciente que JSP ● Incorpora modulos de código JAVA ● MVC
  • 10. Modelo Managed Beans ● Responsables de la lógica de la aplicación ● Eventos generados por los componentes ● Navegación entre páginas
  • 11. Vista Páginas JSF (ficheros JSP con las tag libraries de JSF) Facelets (ficheros xhtml) <h:inputText value="#{usuario.nombre}"/> Unified Expresion Language
  • 12. Controlador web.xml (Faces Servlet) <web-app> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
  • 14. Ciclo de Vida Estándar de Procesamiento de Peticiones
  • 15. Escenarios de una Petición Respuesta Faces Respuesta No-Faces Petición Faces Petición No-Faces
  • 16. Escenarios de una Petición Escenario 1 Escenario 3 Escenario 2 Petición No-Faces Respuesta Faces Petición Faces Respuesta No -Faces Petición Faces Respuesta No-Faces
  • 17. Bean Un bean es un POJO (Plain Old Java Object), algo tan sencillo como una clase que tiene un constructor público sin argumentos (constructor por defecto) y sus propiedades tienen asociados sus correspondientes métodos get/set .
  • 18. Managed Beans Un Managed Bean es un Java Bean que puede ser accedido desde una página JSF, cada Managed Bean debe tener un nombre y un ámbito.
  • 19. Managed Beans Diferentes usuarios de la aplicación web tienen diferentes instancias del Managed Bean. En ellos se colocará la lógica de negocio y se encargan de conectar los campos de una página JSF con atributos del Managed Bean.
  • 20. ¿Cómo declaramos un bean? Desde el fichero faces-config.xml o con anotaciones. En JSF 1.x era necesario declarar el managed bean en el fichero faces-config.xml, en JSF 2.0 no es necesario, con la anotación es suficiente.
  • 22. Utilizando anotaciones package com.examples; import javax.faces.bean.ManagedBean import javax.faces.bean.SessionScoped@ManagedBean @SessionScoped public class UserBean {...} @ManagedBean(name="user") @SessionScoped public class UserBean {...}
  • 23. Ámbitos de los beans @RequestScoped ámbito de petición, al terminar la petición se elimina la instancia del bean. @SessionScoped ámbito de sesión, mientras la sesión exista existe el bean. @ViewScoped: entre request y session, el bean existirá mientras la petición se envíe a la misma vista. @ApplicationScoped ámbito de la aplicación web, mientras la aplicación se ejecute el bean existirá.
  • 24. Navegación Navegación estática: La navegación más sencilla en JSF consiste en asociar un String al action de un botón o link:
  • 25. Navegación Navegación dinámica: Si queremos poder elegir la página a mostrar en tiempo de ejecución, asociamos el action a un método que nos devuelva el String correspondiente:
  • 26. Reglas de navegación ¿Cómo asociamos el String del action con una página JSF? Creando reglas de navegación en el fichero faces-config.xml:
  • 27. Reglas de navegación ¿Tenemos que utilizar obligatoriamente faces- config.xml? No. Desde JSF 2.0 podemos utilizar navegación implícita, es decir, nos basta con poner en el action el nombre de nuestra página JSF sin la extensión correspondiente. <h:commandButton action="login"/> nos
  • 28. Etiquetas básicas Las páginas JSF tienen una estructura similar a esto: Etiquetas core, se usan, entre otras aplicaciones, para manejo de eventos, atributos, conversión de datos, validadores, recursos y definición de la página, las cuales usan el prefijo f. Etiquetas html_basic, su utilización es básicamente para la construcción de formularios y demás elementos de interfaz de usuario, que usa el prefijo h.
  • 29. Etiquetas básicas 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 botón, o compuesto, como una tabla, que puede estar compuesta por varios componentes.
  • 30. Componentes de interfaz de usuario 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.
  • 31. Conjunto de clases UI ● UICommand: Representa un control que dispara actions cuando se activa. ● UIForm: Encapsula un grupo de controles que envían datos de la aplicación. Este componente es análogo 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 página. ● UIPanel: Muestra una tabla. ● UISelectItem: Representa un sólo í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, selececcionándolo o deseleccionándolo. 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.
  • 32. Etiquetas básicas y componentes UIForm <h:form … </h:form> UIGraphic <h:graphicImage url="/imagenes/duke.jpg"/ > UICommand <h:commandButton value="Aceptar" action="siguiente"/> UISelectBoolean <h:selectBooleanCheckbox value="#{formulario.recibirIn formacion}"/>
  • 33. Etiquetas básicas y componentes UIInput <h:inputText value="#{formulario.nombre}"/ > <h:inputTextarea rows="3" cols="15" value="Escribir aqui.."/> <h:inputSecret value="#{formulario.password}"/>
  • 34. Etiquetas básicas y componentes UIOutput <h:outputText value="Hola Mundo!"/> <h:outputLink value="http://www.hoylodejo.com/"> <h:outputText value="Clic aquí"/> </h:outputLink>
  • 35. Etiquetas básicas y componentes UISelectMany <h:selectManyCheckbox value="#{formulario.aficiones}"> <f:selectItem itemValue="musica" itemLabel="Música"/> <f:selectItem itemValue="cine" itemLabel="Cine"/> <f:selectItem itemValue="pesca" itemLabel="Pesca"/> <f:selectItem itemValue="deporte" itemLabel="Deporte"/> <f:selectItem itemValue="lectura" itemLabel="Lectura"/> </h:selectManyCheckbox>
  • 36. Etiquetas básicas y componentes UISelectMany <h:selectManyListbox value="#{formulario.lenguajes}"> <f:selectItem itemValue="c" itemLabel="C"/> <f:selectItem itemValue="c++" itemLabel="C++"/> <f:selectItem itemValue="java" itemLabel="Java"/> <f:selectItem itemValue="Visual basic" itemLabel="Visual basic"/> </h:selectManyListbox>
  • 37. Etiquetas básicas y componentes UISelectMany <h:selectManyMenu value="#{cuestionario.comidas}"> <f:selectItem itemValue="carnes" itemLabel="Carnes"/> <f:selectItem itemValue="pescados" itemLabel="Pescados"/> <f:selectItem itemValue="legumbres" itemLabel="Legumbres"/> <f:selectItem itemValue="pastas" itemLabel="Pastas"/> <f:selectItem itemValue="sopas" itemLabel="Sopas"/> </h:selectManyMenu>
  • 38. Etiquetas básicas y componentes UISelectOne <h:selectOneRadio value="#{formulario.fumador}"> <f:selectItem itemValue="si" itemLabel="Fumador"/> <f:selectItem itemValue="no" itemLabel="No fumador"/> </h:selectOneRadio> <h:selectOneMenu value="#{formulario.sistema}"> <f:selectItem itemValue="linux" itemLabel="Linux"/> <f:selectItem itemValue="windows" itemLabel="Windows"/> </h:selectOneMenu>
  • 39. Etiquetas básicas y componentes UISelectOne <h:selectOneListbox value="#{cuestionario.estado}"> <f:selectItem itemValue="soltero" itemLabel="Soltero"/> <f:selectItem itemValue="casado" itemLabel="Casado"/> <f:selectItem itemValue="divorciado" itemLabel="Divorciado"/> <f:selectItem itemValue="separado" itemLabel="Separado"/> </h:selectOneListbox>
  • 40. Etiquetas básicas y componentes UIPanel <h:panelGrid columns="3" border="1"> <h:outputText value="(1,1)"/> <h:outputText value="(1,2)"/> <h:outputText value="(1,3)"/> <h:outputText value="(2,1)"/> <h:outputText value="(2,2)"/> <h:outputText value="(2,3)"/> <h:panelGroup> <h:outputText value="Columna 1"/> <h:outputText value="Columna 2"/> </h:panelGroup> </h:panelGrid>
  • 42. Conversión <h:inputText id="fecha" value="#{pago.fecha}"> <f:convertDateTime pattern="MM/yyyy"/> </h:inputText> <h:outputText value="#{pago.cantidad}"> <f:convertNumber type="currency"/> </h:outputText> <h:inputText id="cantidad" value="#{pago.cantidad}"> <f:convertNumber minFractionDigits="2"/> </h:inputText>
  • 45. Mensajes <h:inputText id="cantidad" value="#{pago.cantidad}"> <h:message for="cantidad"/> <h:message for="cantidad" showSummary="true" showDetail="false"/> <h:messages styleClass="mensajeError"/> o <h:message for="cantidad" style="color:red"/> <faces-config> <application> <message-bundle>mensajes</message-bundle> </application>...</faces-config>
  • 46. Validación ● <h:inputText value="#{cuestionario.nombre}"> <f:validateLength maximum="12"/> </h:inputText> ● <h:inputText value="#{regalo.cantidad}"> <f:validateLongRange minimum="10" maximum="10000"/> </h:inputText> ● <h:inputText value="#{informe.telefono}" required="true"/> <f:validateLength minimum="9"/> </h:inputText>
  • 47. Manejo de Eventos JSF soportar tres clases de eventos ● Eventos de Acción ● Eventos de Cambio de Valor ● Eventos de Fase
  • 48. Manejo de Eventos Eventos de Acción public class Zodiaco { public void oyente(ActionEvent e) { FacesContext context = FacesContext.getCurrentInstance(); String clientId = e.getComponent().getClientId(context); Map requestParams = context.getExternalContext().getRequest ParameterMap(); . . . . public String accion() { return resultado; . . . . <f:view> <head> <f:loadBundle basename="mensajes" var="msjs"/> </head> <body> <h:form> <h:commandButton image="zodiaco.jpg" actionListener="#{zodiaco.oyente}" action="#{zodiaco.accion}"/> </h:form> </f:view>
  • 49. Manejo de Eventos Eventos de cambio de valor <h:outputText value="#{msjs.nacionalidad}"/> <h:selectOneMenu value="#{formulario.nacionalidad}" onchange="submit()" valueChangeListener="#{formulario. cambioNacionalidad}"> <f:selectItems value="#{formulario.nacionalidade s}"/> </h:selectOneMenu> </h:panelGrid> public class Formulario { public Collection getNacionalidades() { public void cambioNacionalidad (ValueChangeEvent evento) { FacesContext contexto = FacesContext.getCurrentInstance(); if(US.equals((String) evento.getNewValue())) contexto.getViewRoot().setLocale(Locale.US); else contexto.getViewRoot().setLocale(Locale.get Default());
  • 50. Manejo de Eventos Eventos de Fase La implementación JSF dispara eventos conocidos como eventos de fase, antes y después de cada fase del ciclo de vida <faces-config> <lifecycle> <phase-listener>eventoFase</phase-listener> </lifecycle> </faces-config> Los oyentes de fase por medio de la interfaz PhaseListener del paquete javax.faces.event. Esa interfaz define tres métodos: • PhaseId getPhaseId() • void afterPhase(PhaseEvent) • void beforePhase(PhaseEvent)
  • 51. Extensiones ● RichFaces Agrega componentes visuales y soporte para AJAX. ● ICEfaces Contiene diversos componentes para interfaces de usuarios más enriquecidas, tales como editores de texto enriquecidos, reproductores de multimedia, entre otros. ● jQuery4jsf Contiene diversos componentes sobre la base de uno de los más populares framework javascript jQuery. ● PrimeFaces Es una librería muy liviana, todas las decisiones hechas son basadas en mantener a PrimeFaces lo más liviano posible. PrimeFaces es una librería muy simple que no necesita dependencias y configuraciones. ● OpenFaces Librería open source que contiene diferentes componentes JSF, un Framework Ajax y un Framework de validación por parte del cliente.
  • 52. Referencias ● Oracle.JavaServer Faces Technology. [Fecha de consulta: 25 de Abril de 2014]. [On line]. Disponible: http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html ● Master del Web.Tutorial de JavaServer Faces. [Fecha de consulta: 20 de Abril de 2014]. [On line]. ● Disponible: http://elmasterdelaweb.wikispaces.com/file/view/JSF.pdf/179740185/JSF.pdf ● Proyecto Mar. Java Server Faces. [Fecha de consulta: 20 de Abril de 2014]. [On line]. Disponible: http://proyectoremar.tripod.com/Documentos/Herramientas/JavaServerFaces.pdf ● Wikipedia. JavaServer Faces. [Fecha de consulta: 05 de Mayol de 2014]. [On line]. Disponible: http://es.wikipedia.org/wiki/JavaServer_Faces ● Geary,David. Horstmann,Cay. (2010). Core Java Server Faces 3rd edition. Prentices Hall. ● Leonard,Anghel.(2010).JSF 2.0 Cookbook. Packt Publishing ● Lok Tong,Kent Ka .(2009). Beginning JSF™ 2 APIs and JBoss® Seam. Apress ● Burns,Ed. Schalk, Chris.(2010).JavaServer Faces 2.0: The Complete Reference. McGraw- Hill