SlideShare una empresa de Scribd logo
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

Introduccion a UML
Introduccion a UMLIntroduccion a UML
Introduccion a UML
Pablo Andres Cáceres Ferreira
 
Fundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfFundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdf
Rene Guaman-Quinche
 
Diagramas de estado
Diagramas de estadoDiagramas de estado
Diagramas de estado
Rene Guaman-Quinche
 
Análisis y diseño de sistemas sesion 03 - modelado de dominio
Análisis y diseño de sistemas   sesion 03 - modelado de dominioAnálisis y diseño de sistemas   sesion 03 - modelado de dominio
Análisis y diseño de sistemas sesion 03 - modelado de dominio
GianfrancoEduardoBra
 
Diagramas componentes
Diagramas componentesDiagramas componentes
Diagramas componentes
Rene Guaman-Quinche
 
Desarrollo de aplicaciones web con casos de uso
Desarrollo de aplicaciones web  con casos de usoDesarrollo de aplicaciones web  con casos de uso
Desarrollo de aplicaciones web con casos de usoJosafat Mtz
 
Modelo Del Negocio con RUP y UML Parte 3
Modelo Del Negocio con RUP y UML Parte 3Modelo Del Negocio con RUP y UML Parte 3
Modelo Del Negocio con RUP y UML Parte 3
David Motta Baldarrago
 
Portales y portlets web
Portales y portlets webPortales y portlets web
Portales y portlets web
Jossimar de Leon
 
Arquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móvilesArquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móvilesSergio Castillo Yrizales
 
Ejemplo pruebas de software
Ejemplo pruebas de softwareEjemplo pruebas de software
Ejemplo pruebas de software
John Fonseca
 
Ejemplos de herramientas case más utilizadas
Ejemplos de herramientas case más utilizadasEjemplos de herramientas case más utilizadas
Ejemplos de herramientas case más utilizadasKenny Cash
 
Patron Singleton
Patron SingletonPatron Singleton
Android estructura del Sistema Operativo
Android estructura del Sistema OperativoAndroid estructura del Sistema Operativo
Android estructura del Sistema Operativo
Jesus Jimenez
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
Saul Mamani
 
Curso Uml 2.1 Diagramas De Cu Y Clases
Curso Uml   2.1 Diagramas De Cu Y ClasesCurso Uml   2.1 Diagramas De Cu Y Clases
Curso Uml 2.1 Diagramas De Cu Y Clases
Emilio Aviles Avila
 
7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases
Clara Patricia Avella Ibañez
 
Greenfoot 3
Greenfoot 3Greenfoot 3
Greenfoot 3
Elian Maya
 
Greenfoot 2
Greenfoot 2Greenfoot 2
Greenfoot 2
Elian Maya
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoMarvin Zumbado
 

La actualidad más candente (20)

Introduccion a UML
Introduccion a UMLIntroduccion a UML
Introduccion a UML
 
Fundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfFundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdf
 
Diagramas de estado
Diagramas de estadoDiagramas de estado
Diagramas de estado
 
Análisis y diseño de sistemas sesion 03 - modelado de dominio
Análisis y diseño de sistemas   sesion 03 - modelado de dominioAnálisis y diseño de sistemas   sesion 03 - modelado de dominio
Análisis y diseño de sistemas sesion 03 - modelado de dominio
 
Diagramas componentes
Diagramas componentesDiagramas componentes
Diagramas componentes
 
Desarrollo de aplicaciones web con casos de uso
Desarrollo de aplicaciones web  con casos de usoDesarrollo de aplicaciones web  con casos de uso
Desarrollo de aplicaciones web con casos de uso
 
Modelo Del Negocio con RUP y UML Parte 3
Modelo Del Negocio con RUP y UML Parte 3Modelo Del Negocio con RUP y UML Parte 3
Modelo Del Negocio con RUP y UML Parte 3
 
Portales y portlets web
Portales y portlets webPortales y portlets web
Portales y portlets web
 
Arquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móvilesArquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móviles
 
Ejemplo pruebas de software
Ejemplo pruebas de softwareEjemplo pruebas de software
Ejemplo pruebas de software
 
Ejemplos de herramientas case más utilizadas
Ejemplos de herramientas case más utilizadasEjemplos de herramientas case más utilizadas
Ejemplos de herramientas case más utilizadas
 
Patron Singleton
Patron SingletonPatron Singleton
Patron Singleton
 
Android estructura del Sistema Operativo
Android estructura del Sistema OperativoAndroid estructura del Sistema Operativo
Android estructura del Sistema Operativo
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
 
Diagrama de Actividades
Diagrama de ActividadesDiagrama de Actividades
Diagrama de Actividades
 
Curso Uml 2.1 Diagramas De Cu Y Clases
Curso Uml   2.1 Diagramas De Cu Y ClasesCurso Uml   2.1 Diagramas De Cu Y Clases
Curso Uml 2.1 Diagramas De Cu Y Clases
 
7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases
 
Greenfoot 3
Greenfoot 3Greenfoot 3
Greenfoot 3
 
Greenfoot 2
Greenfoot 2Greenfoot 2
Greenfoot 2
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
 

Similar a Javaserver Faces (jsf)

Frameworks J2EE
Frameworks J2EEFrameworks J2EE
Frameworks J2EE
Iker Canarias
 
Jsf jpa-y-hibernate-capitulo-01
Jsf jpa-y-hibernate-capitulo-01Jsf jpa-y-hibernate-capitulo-01
Jsf jpa-y-hibernate-capitulo-01
Genner Eduardo Cardenas Ramirez
 
Jsf jpa-y-hibernate-capitulo-02
Jsf jpa-y-hibernate-capitulo-02Jsf jpa-y-hibernate-capitulo-02
Jsf jpa-y-hibernate-capitulo-02
Genner Eduardo Cardenas Ramirez
 
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
 
Etiquetas básicas jsf
Etiquetas básicas jsfEtiquetas básicas jsf
Etiquetas básicas jsflauritat_9
 
[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
Eudris Cabrera
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación Java
Antonio Contreras
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
Jose Juan R. Zuñiga
 
9 tecnologías v1.1
9 tecnologías v1.19 tecnologías v1.1
9 tecnologías v1.1UTN
 
Arquitectura java web
Arquitectura java webArquitectura java web
Arquitectura java web
Jose Luis Bugarin Peche
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
carlossanchezvillena
 
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
Javier 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
 
Tecnologias web
Tecnologias webTecnologias web
Tecnologias web
noemi_arbos
 

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
 
Etiquetas básicas jsf
Etiquetas básicas jsfEtiquetas básicas jsf
Etiquetas básicas jsf
 
[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
 
DISEÑO DE APLICACIONES WEB (INTRODUCCION)
DISEÑO DE APLICACIONES WEB (INTRODUCCION)DISEÑO DE APLICACIONES WEB (INTRODUCCION)
DISEÑO DE APLICACIONES WEB (INTRODUCCION)
 
Intro jsf
Intro jsfIntro jsf
Intro jsf
 
Exposicion JSF
Exposicion JSFExposicion JSF
Exposicion JSF
 
Expo
ExpoExpo
Expo
 
Tecnologias web
Tecnologias webTecnologias web
Tecnologias web
 

Último

MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptxMATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
Fernando Benavidez
 
Mapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIASMapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIAS
AlfonsoRosalesFonsec
 
libro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdflibro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdf
MiriamAquino27
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
UOC Estudios de Informática, Multimedia y Telecomunicación
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
CarlitosWay20
 
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
JhonatanOQuionesChoq
 
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptxtema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
DianaSG6
 
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- ConstruccionA3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
manuelalejandro238
 
Edafología - Presentacion Orden Histosoles
Edafología - Presentacion Orden HistosolesEdafología - Presentacion Orden Histosoles
Edafología - Presentacion Orden Histosoles
FacundoPortela1
 
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
DavidHunucoAlbornoz
 
Distribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de MediasDistribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de Medias
arielemelec005
 
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
FRANCISCOJUSTOSIERRA
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
mesiassalazarpresent
 
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdfPLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
MariaCortezRuiz
 
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptxDesbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
ValGS2
 
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdfLas Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
NicolasGramajo1
 
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdfHITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
GROVER MORENO
 
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaaEspecificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
ssuserebb7f71
 
Criterios de la primera y segunda derivada
Criterios de la primera y segunda derivadaCriterios de la primera y segunda derivada
Criterios de la primera y segunda derivada
YoverOlivares
 
TEMA 11. FLUIDOS-HIDROSTATICA.TEORIApptx
TEMA 11.  FLUIDOS-HIDROSTATICA.TEORIApptxTEMA 11.  FLUIDOS-HIDROSTATICA.TEORIApptx
TEMA 11. FLUIDOS-HIDROSTATICA.TEORIApptx
maitecuba2006
 

Último (20)

MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptxMATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
 
Mapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIASMapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIAS
 
libro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdflibro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdf
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
 
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
 
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptxtema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
 
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- ConstruccionA3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
 
Edafología - Presentacion Orden Histosoles
Edafología - Presentacion Orden HistosolesEdafología - Presentacion Orden Histosoles
Edafología - Presentacion Orden Histosoles
 
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
 
Distribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de MediasDistribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de Medias
 
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
 
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdfPLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
 
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptxDesbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
 
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdfLas Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
 
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdfHITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
 
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaaEspecificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
Criterios de la primera y segunda derivada
Criterios de la primera y segunda derivadaCriterios de la primera y segunda derivada
Criterios de la primera y segunda derivada
 
TEMA 11. FLUIDOS-HIDROSTATICA.TEORIApptx
TEMA 11.  FLUIDOS-HIDROSTATICA.TEORIApptxTEMA 11.  FLUIDOS-HIDROSTATICA.TEORIApptx
TEMA 11. FLUIDOS-HIDROSTATICA.TEORIApptx
 

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