Jsf - Course

Click here to load reader

  • date post

    16-Mar-2016
  • Category

    Documents

  • view

    245
  • download

    10

Embed Size (px)

description

Course of jsf

Transcript of Jsf - Course

  • Curso de Java Server Faces y Ajax

    Manualdelalumno

    Docente:CdricSimon Versin1.0

    Solu

    cionJava.com

    Ing.CedricSim

    onTel:22680974C

    el:88882387Email:ce

    [email protected]

    solu

    cionja

    va.co

    mW

    eb:www.solucionjava.com

  • CursodeJSP Pagina2/70

    ndice ndice .................................................................................................................................................................................... 2

    1 Introduccin al curso ......................................................................................................................................................... 5

    1.1 Objetivo de este curso ................................................................................................................................................ 5

    1.2 Manual del alumno ..................................................................................................................................................... 5

    1.3 Ejercicios prcticos .................................................................................................................................................... 5

    1.4 Requisitos para atender a este curso ........................................................................................................................ 5

    1.5 Soporte despus del curso .......................................................................................................................................... 5

    2 Introduccin a Java Server Faces ..................................................................................................................................... 6

    2.1 Que es JSF? ............................................................................................................................................................... 6

    2.2 Servidor y herramientas utilizados ........................................................................................................................... 6

    2.3 Primera aplicacin ..................................................................................................................................................... 7

    2.4 Primera pgina JSF ................................................................................................................................................... 8

    2.5 Recuperando informaciones del cdigo Java ........................................................................................................... 9

    3 Aplicaciones JSF ............................................................................................................................................................. 10

    3.1 Qu es una aplicacin JavaServer Faces? ............................................................................................................ 10

    3.2 Modelo de componentes de interfaz de usuario ..................................................................................................... 10

    3.3 Las clases de componentes de interfaz de usuario ................................................................................................ 10

    3.4 Conversin de Modelo ............................................................................................................................................. 13

    3.5 Evento y el oyente de modelo .................................................................................................................................. 14

    1.1 Validacin ................................................................................................................................................................. 15

    3.6 Modelo de navegacin .............................................................................................................................................. 15 3.6.1 Configuracin de reglas de navegacin .............................................................................................................. 15 3.6.2 Reglas de navegacin implcitas ......................................................................................................................... 18

    3.7 Backed Beans ............................................................................................................................................................ 18 3.7.1 Crear una clase de bean de respaldo .................................................................................................................... 18 3.7.2 Configuracin de un Bean ................................................................................................................................... 19

    3.8 Usando el EL unificada para referenciar Backed beans ...................................................................................... 20 3.8.1 El Ciclo de Vida de una pgina JavaServer Faces .............................................................................................. 21 3.8.2 Fase de restauracin de vista ............................................................................................................................... 22 3.8.3 Fase de aplicacin de valores .............................................................................................................................. 23 3.8.4 Fase de validaciones de proceso .......................................................................................................................... 23 3.8.5 Fase de actualizacin de valores de modelo ........................................................................................................ 24 3.8.6 Fase de invocacin de la aplicacin .................................................................................................................... 24 3.8.7 Fase de creacin de la respuesta .......................................................................................................................... 24

    4 Expresiones EL ................................................................................................................................................................ 26

    4.1 Informacin general sobre EL ................................................................................................................................ 26

    4.2 Evaluacin inmediata y diferida ............................................................................................................................. 26 4.2.1 Evaluacin Inmediata .......................................................................................................................................... 26 4.2.2 Evaluacin diferida ............................................................................................................................................. 27

    4.3 Valor y el mtodo de expresiones ............................................................................................................................ 27

    4.4 Operadores ................................................................................................................................................................ 27

    4.5 Palabras reservadas ................................................................................................................................................. 28

    4.6 Ejemplos de uso de EL ............................................................................................................................................. 28

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina3/70

    5 JSTL - Libreras estndar Taglib .................................................................................................................................... 29

    5.1 Introduccin .............................................................................................................................................................. 29

    5.2 Core ........................................................................................................................................................................... 29

    5.3 Iteracin .................................................................................................................................................................... 29

    5.4 Acciones de URL ...................................................................................................................................................... 30

    5.5 Condicionales ............................................................................................................................................................ 30

    5.6 Formato de texto con capacidad I18N .................................................................................................................... 31

    5.7 Acceso a bases de datos ............................................................................................................................................ 32

    5.8 La manipulacin de XML ........................................................................................................................................ 33

    6 Formularios ...................................................................................................................................................................... 34

    6.1 Formulario sencillo .................................................................................................................................................. 34

    6.2 Formulario mas complejo ........................................................................................................................................ 35

    7 HtmlDataTable ................................................................................................................................................................. 37

    8 Mensaje de error personalizados ..................................................................................................................................... 42

    8.1 Lista de mensaje personalizados ............................................................................................................................. 42

    8.2 Pgina de error personalizada: ............................................................................................................................... 42

    9 Convertidores ................................................................................................................................................................... 43

    9.1 Qu es un convertidor? .......................................................................................................................................... 43

    9.2 Uso de los convertidores .......................................................................................................................................... 43

    9.3 Convertidores incluidos ........................................................................................................................................... 43 9.3.1 Convertidor DateTime ......................................................................................................................................... 44 9.3.2 Convertidor de Nmero ....................................................................................................................................... 44

    9.4 Convertidores personalizados ................................................................................................................................. 46

    10 Validadores ..................................................................................................................................................................... 49

    10.1 Uso y Creacin de los validadores ........................................................................................................................ 49

    10.2 Validadores incluidos ............................................................................................................................................. 49

    10.3 Validacin a nivel de aplicacin ............................................................................................................................ 49

    10.4 Validadores personalizados ................................................................................................................................... 50

    10.5 Validador en Backed Bean .................................................................................................................................... 51

    11 Componentes personalizados ......................................................................................................................................... 52

    11.1 Creacin de componentes personalizados para JSP ........................................................................................... 52 11.1.1 El Componente .................................................................................................................................................. 53 11.1.2 Renderer ............................................................................................................................................................ 54 11.1.3 Tag ..................................................................................................................................................................... 56 11.1.4 Inline Renderer ................................................................................................................................................. 58

    11.2 Componentes personalizados para Facelets ........................................................................................................ 59

    12 Introduccin a Ajax ....................................................................................................................................................... 61

    12.1 Definicin y uso ....................................................................................................................................................... 61

    12.2 Marcos de trabajo .................................................................................................................................................. 61

    13 Ajax con Java ................................................................................................................................................................. 62

    13.1 Llamada Ajax con HTML ..................................................................................................................................... 62

    13.2 Llamada Ajax con Java ......................................................................................................................................... 63 13.2.1 Servlet para Ajax ............................................................................................................................................... 63

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina4/70

    13.3 Ajax y seguridad ..................................................................................................................................................... 65

    14 Componentes JSF para Ajax ........................................................................................................................................ 66

    14.1 Cmo JSF y Ajax pueden trabajar juntos? ....................................................................................................... 66

    14.2 Utilizar el (Ajax) JavaScript en su pgina JSF .................................................................................................... 66 14.2.1 Pros .................................................................................................................................................................... 66 14.2.2 Contras .............................................................................................................................................................. 66

    14.3 Poner su cdigo de Ajax JavaScript en los componentes JSF ............................................................................ 66 14.3.1 Pros .................................................................................................................................................................... 66 14.3.2 Contras .............................................................................................................................................................. 66

    14.4 Aprovechar la creciente coleccin de marcos de trabajo Ajax JSF .................................................................. 67 14.4.1 Pros .................................................................................................................................................................... 67 14.4.2 Contras .............................................................................................................................................................. 67

    14.5 Utilizar el nuevo tag ................................................................................................................................ 67 14.5.1 Pros .................................................................................................................................................................... 67 14.5.2 Contras .............................................................................................................................................................. 67 14.5.3 Por qu el Ajax en JSF? ................................................................................................................................... 67

    14.5.3.1 Ventajas de un enfoque especfico JSF Ajax ............................................................................................. 67 14.5.4 Uso del tag .......................................................................................................................................... 68

    14.5.4.1 Ejemplo sencillo ......................................................................................................................................... 68 14.5.4.2 renderer: Especificacin de los elementos de actualizacin en el cliente .................................................. 69 14.5.4.3 execute: Especificacin de los elementos a procesar en servidor .............................................................. 69 14.5.4.4 event: mencionar a cual evento de usuario debe disparar la llamada Ajax ................................................ 70

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina5/70

    1 Introduccinalcurso1.1 Objetivodeestecurso EnestecursovamosaaprenderellenguajeJSFquenospermitircrearpginaswebdinmicas.

    1.2 Manualdelalumno Estemanualdelalumnoesunaayudaparaelalumno,paratengaunrecuerdodelcurso.Estemanualcontieneunresumendelasmateriasquesevanaestudiarduranteelcurso,peroelalumnodeberadetomarnotaspersonalesparacompletasestemanual.

    1.3 Ejerciciosprcticos Paracaptarmejorlateora,seharnmuchosejerciciosconlosalumnos,paraprobarlateorayverificarlaintegracindelamateria.Tambin,elalumnopodrcopiarsuscdigosenundisquetealfindelcursoparallevarse,confindeseguirlaprcticaensuhogar.

    1.4 Requisitosparaatenderaestecurso UnabuenconocimientodeloslenguajesJava,JSP,HTML,yJavascriptesrequeridaparaseguirestecurso.LacreacinyelmanejodeobjetosJavaascomoelJSPestnconsideradacmoasimiladoantesdeempezarestecurso.

    Sielalumnotienedificultadesenunuotrocapitulo,eldebesentirselibredepedirexplicacionesadicionalesalprofesor.

    Perosiaparecequeelalumnonoposeelosrequisitosmnimosparaestecurso,porrespetoalosotrosalumnosqueyaposeenestamateria,elalumnopodrasertrasladoparaotrocursoenelfuturo,cuandoelcumplirconlosrequisitos.

    1.5 Soportedespusdelcurso Sitienespreguntassobrelamateriadelcursoentusejerciciosprcticos,[email protected]

    Parainformacionessobreotroscursos,visitaelsitiowebwww.solucionjava.com.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina6/70

    2 IntroduccinaJavaServerFaces

    2.1 QueesJSF? JavaServerFaces(JSF)esuntecnologayframeworkparaaplicacionesJavabasadasenwebquesimplificaeldesarrollodeinterfacesdeusuarioenaplicacionesJavaEE.

    JSFusaJavaServerPages(JSP)comolatecnologaquepermitehacereldesplieguedelaspginas,perotambinsepuedeacomodaraotrastecnologascomoXUL.

    JSFincluye: UnconjuntodeAPIspararepresentarcomponentesdeunainterfazdeusuarioyadministrarsu

    estado,manejareventos,validarentrada,definirunesquemadenavegacindelaspginasydarsoporteparainternacionalizacinyaccesibilidad.

    Unconjuntopordefectodecomponentesparalainterfazdeusuario. DosbibliotecasdeetiquetaspersonalizadasparaJavaServerPagesquepermitenexpresaruna

    interfazJavaServerFacesdentrodeunapginaJSP. Unmodelodeeventosenelladodelservidor. Administracindeestados. Beansadministrados.

    LaespecificacindeJSFfuedesarrolladaporlaJavaCommunityProcess

    VersionesdeJSF: JSF1.0(11032004)lanzamientoinicialdelasespecificacionesdeJSF. JSF1.1(27052004)lanzamientoquesolucionabaerrores.Sincambiosenlasespecificaciones

    nienelrenderkitdeHTML. JSF1.2(11052006)lanzamientoconmejorasycorreccindeerrores. JSF2.0(12082009)ltimolanzamiento.

    LasprincipalesimplementacionesdeJSFson: JSFReferenceImplementationdeSunMicrosystems. MyFacesproyectodeApacheSoftwareFoundation. RichFaces ICEfacesContienediversoscomponentesparainterfacesdeusuariosmsenriquecidas,tales

    comoeditoresdetextoenriquecidos,reproductoresdemultimedia,entreotros. jQuery4jsfContienediversoscomponentessobrelabasedeunodelosmspopularesframework

    javascriptjQuery.

    2.2 Servidoryherramientasutilizados JavaServerFaces2.0esunatecnologanueva,ynecesitalasltimasversionesdelasherramientasdedesarrolloyservidoreswebparapoderusarla.

    Aniveldeherramientas,lasmsutilizadassonEclipseyNetBeans.EnelcursousaremosNetBeansversin6.8oarriba.

    Aniveldeservidoresweb,servidorescomoApacheTomcat6,Jboss5,oGlassFish3soportanJSF2.0.EnelcursousaremosGlassFish3quevieneincluidoconNetBeans.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina7/70

    2.3 Primeraaplicacin PrimerovamosainstalarNetBeansycrearunnuevoproyecto.

    AgregamoslalibreraJSF2.0alservidor.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina8/70

    Iniciamoselservidorwebydesplegamoslaaplicacin.Miramoselresultadoenhttp://localhost:8080/CursoJSFwar

    PorelmomentosoloestamosmirandoaunapginaJSP,nadadeJSF.

    2.4 PrimerapginaJSF LaspginasJSFsonpginasJSPconunaslibrerasTaglibadicionales.

    Ademas,laspginasJSPnosellamandirectamente,perosellamanatravsdelmotorJSF.ParallamaralapginaJSF,bastaconagregar/faces/anteselnombredelapgina.

    http://localhost:8080/CursoJSFwar/faces/index.jsp

    Comolovemos,unapginaJSP(sincdigoJSF)puedeserllamadasinproblema.

    Laconfiguracindelreenvosepuedepersonalizar(porcarpetay/oporextensin)enweb.xml: Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet /faces/*

    CuandocreamosunanuevapginaJSF,podemosescogerentredostiposdesintaxis:FaceletsoJSP.

    FaceletsusaunformatoXML(XHTML),yJSPusa...elformatoJSP.

    ElJSFusapginasJSPoXHTML,unarchivodeconfiguracinXML(facesconfig.xml),yJavaPOJO's.

    ApartirdeJSF2.0,elformatoXMLeselestndar.

    Agregamoselarchivodeconfiguracin.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina9/70

    Ahoraquetenemostodolisto,creamosnuestraprimerapginaJSF,usandolaopcinJSP:

    Mi primera pagina JSP

    ElcdigoJSFenlapginaJSPsedebeencontrarentrelostagsy.

    Comopodemosver,seincluyenlasdoslibrerasTaglib,queseusanluego,conlasetiquetasy.

    SiusamoselformatoXHTML,todoelcontenidoseconsideraJSF.

    Hello alumno !!!

    LabibliotecacontieneequivalentesdelHTML,yaseaformularios,botones,cajasdetexto,imgenes,etc...

    EnelfuturousaremoslosFaceletsynomaselJSP.

    2.5 RecuperandoinformacionesdelcdigoJava VamosacrearunaclaseJava(JSFBackedBean)HelloyllamarladesdenuestrapginaJSF.package curso;import javax.faces.bean.ManagedBean;import javax.faces.bean.RequestScoped;

    @ManagedBean(name="Hello")@RequestScopedpublic class Hello { public Hello() { } public String getNombre(){ return "Cedric"; }}

    Ymodificamoslapginaindex.xhtml:Hello #{Hello.getNombre()} !!!

    EnelfuturousaremoselformatoXHTML,ynoincluirlasetiquetas,ni,quesernlossiguientes:

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina10/70

    3 AplicacionesJSF3.1 QuesunaaplicacinJavaServerFaces?

    Ensumayorparte,unaaplicacinJavaServerFacesescomocualquierotraaplicacinJavaWeb.UnaaplicacintpicadeJavaServerFacesincluyelassiguientespiezas:

    Unconjuntodepginasweb,enlaqueloscomponentesdeinterfazdeusuariosonestablecidos. Unconjuntodebibliotecasdeetiquetasproporcionaretiquetasparaaadircomponentesde

    interfazdeusuarioalapginaweb. UnconjuntodeBackedBean,quesonJavaBeanscomponentesquedefinenlaspropiedadesy

    funcionesdeloscomponentesdelainterfazdeusuarioenunapgina. Opcionalmente,unoomsficherosdeconfiguracindelaaplicacinderecursos(comofaces

    config.xmlfile),quedefinenlasnormasdenavegacindelapginayconfiguralosbeansyotrosobjetospersonalizados,talescomocomponentespersonalizados.

    Undescriptordedespliegue(unarchivoweb.xml). Esposiblequeunconjuntodeobjetospersonalizadoscreadosporeldesarrolladordeaplicaciones.

    Estosobjetospuedenincluircomponentespersonalizados,validadores,convertidores,olosoyentes.

    Unconjuntodeetiquetaspersonalizadaspararepresentarlosobjetospersonalizadosenlapgina.

    3.2 Modelodecomponentesdeinterfazdeusuario

    JavaServerFacescomponentesdeinterfazdeusuariosonlosbloquesdeconstruccindevistadeJavaServerFaces.

    JavaServerFacescomponentesdeinterfazdeusuariosonelementosconfigurables,reutilizablesquecomponenlainterfazdeusuariodeaplicacionesJavaServerFaces.Uncomponentepuedesersimple,comounbotn,opuedensercompuestos,talescomounatabla,compuestademltiplescomponentes.

    LatecnologaJavaServerFacesproporcionaunaricaarquitecturadecomponentesflexiblesqueincluyelosiguiente:

    UnconjuntodeclasesUIComponentparaespecificarelestadoyelcomportamientodeloscomponentesdelainterfazdeusuario

    Unmodeloderepresentacinquedefineelmododehacerloscomponentesdevariasmaneras Uneventodeescuchayelmodeloquedefinecmomanejarloseventosdeloscomponentes Unmodelodeconversinquedefinecmoregistrarlosconvertidoresdedatosenuncomponente Unmodelodevalidacinquedefinecmoregistrarvalidadoresenuncomponente

    Estaseccindescribebrevementecadaunadeestaspiezasdelaarquitecturadecomponentes.

    3.3 Lasclasesdecomponentesdeinterfazdeusuario LatecnologaJavaServerFacesproporcionaunconjuntodeclasesdecomponentesdeinterfazdeusuarioydecomportamientoasociadosalasinterfacesqueespecificantodaslasfuncionalidaddeloscomponentesdeinterfazdeusuario,comocomponentedeparticipacindelestado,mantenerunareferenciaalosobjetos,yuneventodeconduccinymanejodelaprestacindeunconjuntodecomponentesestndar.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina11/70

    Lasclasesdecomponentessontotalmenteextensible,permitiendoalosescritoresdecomponentesparacrearsuspropioscomponentespersonalizados.Creacindecomponentespersonalizadosesuntemaavanzadoqueveremosmstarde.

    Laclasebaseabstractaparatodosloscomponentesdeinterfazdeusuarioesjavax.faces.component.UIComponent.

    LasclasesdecomponentesdeinterfazdeusuarioamplianlaclaseUIComponentBase,(unasubclasedelaclaseUIComponent),quedefineelestadopordefectoyelcomportamientodeuncomponentedeinterfazdeusuario.ElsiguienteconjuntodeclasesdecomponentesdeinterfazdeusuarioseincluyeconlatecnologaJavaServerFaces:

    UIColumn:RepresentaunasolacolumnadedatosenuncomponenteUIData. UICommand:Representauncontrolqueiniciaaccionescuandoseactiva. UIData:Representaunenlacededatosaunacoleccindedatosrepresentadosporunainstancia

    dataModel. UIForm:Encapsulaungrupodecontrolesqueenviardatosalaaplicacin.Estecomponentees

    anlogoalaetiquetadeformularioenHTML. UIGraphic:Muestraunaimagen. UIInput:Tomadeentradadedatosdeunusuario.EstaclaseesunasubclasedeUIOutput. UIMessage:Muestraunmensajedeerrortraducidos. UIMessages:Muestraunconjuntodemensajesdeerrortraducidos. UIOutcomeTarget:Muestraunhipervnculoenlaformadeunvnculoounbotn. UIOutput:Muestralasalidadedatosenunapgina. UIPanel:administraeldiseodesuscomponentesnio. UIParameter:Representalosparmetrosdesustitucin. UISelectBoolean:Permitealusuarioestablecerunvalorbooleanoenuncontroldeselecciny

    anulacindeella.EstaclaseesunasubclasedelaclaseUIInput. UISelectItem:Representaunsoloelementoenunconjuntodeelementos. UISelectItems:Representatodounconjuntodeelementos. UISelectMany:Permitealusuarioseleccionarvarioselementosdeungrupodeelementos.Esta

    claseesunasubclasedelaclaseUIInput. UISelectOne:Permitealusuarioseleccionarunelementodeungrupodeelementos.Estaclase

    esunasubclasedelaclaseUIInput. UIViewParameter:Representalosparmetrosdeconsultaenunasolicitud.Estaclaseesuna

    subclasedelaclaseUIInput. UIViewRoot:Representalarazdelrboldecomponentes.

    AdemsdeampliarUIComponentBase,lasclasesdecomponentetambinaplicarunaomsinterfacesdecomportamiento,cadaunodeloscualesdefineciertocomportamientodeunconjuntodecomponentescuyasclasesimplementanlainterfaz.

    Estasinterfacesdecomportamientosonlassiguientes: ActionSource:Indicaqueelcomponentepuededesencadenaruneventodeaccin.Estainterfaz

    estdiseadoparautilizarseconcomponentesbasadosenlatecnologaJavaServerFaces1.1_01yversionesanteriores.

    ActionSource2:ExtiendeActionSource,yporlotantoproporcionalamismafuncionalidad.Sinembargo,sepermitealoscomponentesautilizarelELunificadocuandosehacereferenciaalosmtodosparacontrolarloseventosdeaccin.

    EditableValueHolder:ExtiendeValueHolderyespecificalascaractersticasadicionalesparaloscomponentesmodificable,comolavalidacinyemitirloseventosdecambiodevalor.

    NamingContainer:losmandatosquecadacomponentederazenestecomponentetieneunaidentificacinnica.

    StateHolder:Indicaqueuncomponentehaestadoquedebenguardarentrelassolicitudes.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina12/70

    ValueHolder:Indicaqueelcomponentemantieneunvalorlocal,ascomolaposibilidaddeaccederalosdatosenelniveldemodelo.

    SystemEventListenerHolder:MantieneunalistadecasosSystemEventListenerparacadatipodeSystemEventdefinidoporesaclase.

    ClientBehaviorHolder:aadelacapacidaddeunirloscasosClientBehaviorcomounasecuenciadecomandosreutilizables.

    CadaetiquetapersonalizadadefinidaenelestndarHTMLhacerkitsecomponedelafuncionalidaddeloscomponentes(definidosenlaclaseUIComponent)ylaprestacindeatributos(definidosporlaclaseRenderer).

    ListadeetiquetasUIComponent

    Tag Funciones Rendered As Apariencia

    column Representa una columna de datos en un componente UIData

    A column of data in an HTML table

    Una columna de una tabla

    commandButton Enva un formulario para la solicitud

    An HTML element, where the type value can be submit, reset, or image

    Un botn

    commandLink Enlaces a otra pgina o ubicacin en una pgina

    An HTML element Un hipervnculo

    dataTable Representa un contenedor de datos

    An HTML element Una tabla que se pueden actualizar de forma dinmica

    form Representa una forma de entrada (etiquetas internas de la forma recibir los datos que se presentar con el formulario)

    An HTML element No aparece

    graphicImage Muestra una imagen An HTML element Una imagen inputHidden Permite a un autor de la

    pgina incluir una variable oculta en una pgina

    An HTML element

    No aparece

    inputSecret Permite al usuario introducir una cadena sin la cadena aparece en claro en el campo

    An HTML element

    Un campo de texto, que muestra una fila de estrellas en lugar de la cadena real que haya entrado

    inputText Permite al usuario introducir una cadena

    An HTML element

    Un campo de texto

    inputTextarea Permite a un usuario introducir una cadena de varias lneas

    An HTML element Un campo de texto de varias lineas

    message Muestra un mensaje localizado

    An HTML tag if styles are used

    Una cadena de texto

    messages Muestra los mensajes localizados

    A set of HTML tags if styles are used

    Una cadena de texto

    outputFormat Muestra un mensaje localizado

    Plain text Texto sin formato

    outputLabel Muestra un componente anidado como una etiqueta para un campo de entrada especificado

    An HTML element Texto sin formato

    outputLink Enlaces a otra pgina o ubicacin en una pgina sin

    An HTML element Un hipervnculo

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina13/70

    que se genere un evento de accin

    outputText Muestra una lnea de texto Plain text Texto sin formatopanelGrid Muestra una tabla An HTML element with

    and elementsUna tabla

    panelGroup Grupos de un conjunto de componentes en uno de los padres

    A HTML or element

    Una fila de una tabla de

    selectBooleanCheckbox

    Permite a un usuario cambiar el valor de una opcin boleana

    An HTML element.

    Una casilla de verificacin

    selectItem Representa un elemento en una lista de elementos en un componente UISelectOne

    An HTML element No aparece

    selectItems Representa una lista de elementos en un componente UISelectOne

    A list of HTML elements

    No aparece

    selectManyCheckbox Muestra un conjunto de casillas de verificacin de que el usuario puede seleccionar varios valores

    A set of HTML elements of type checkbox

    Un conjunto de casillas de verificacin

    selectManyListbox Permite al usuario seleccionar varios elementos de un conjunto de elementos, todos muestran a la vez

    An HTML element Un cuadro de lista

    selectManyMenu Permite al usuario seleccionar varios elementos de un conjunto de elementos

    An HTML element Un cuadro combinado desplazable

    selectOneListbox Permite a un usuario para seleccionar un elemento de un conjunto de elementos, todos muestran a la vez

    An HTML element Un cuadro de lista

    selectOneMenu Permite a un usuario para seleccionar un elemento de un conjunto de elementos

    An HTML element Un cuadro combinado desplazable

    selectOneRadio Permite a un usuario para seleccionar un elemento de un conjunto de elementos

    An HTML element

    Un conjunto de botones de radio

    3.4 ConversindeModelo UnaaplicacinJavaServerFaces,opcionalmente,sepuedeasociarconuncomponentedeservidordedatosdeobjetossecundarios.EsteobjetoesuncomponenteJavaBeans,comoungranoderespaldo.Unaaplicacinobtieneyestableceelobjetodedatosparauncomponentellamandoalaspropiedadesdeobjetoapropiadoparaesecomponente.

    Cuandouncomponenteestasociadoaunobjeto,laaplicacintienedospuntosdevistadelosdatosdelcomponente:

    Elpuntodevistadelmodelo,enelqueserepresentanlosdatoscomotiposdedatos,talescomointolong.

    Lavistadepresentacin,enelqueserepresentanlosdatosdeunamaneraquepuedeserledoomodificadoporelusuario.Porejemplo,unjava.util.Datepuedeserrepresentadacomounacadenadetextoenelformatomm/dd/aaocomounconjuntodetrescadenasdetexto.

    LaimplementacindeJavaServerFacesconvierteautomticamentedatosdeloscomponentesentreestosdospuntosdevistacuandolapropiedaddebeanasociadosconelcomponentedeunodelostipossoportadosporlosdatosdelcomponente.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina14/70

    Porejemplo,siuncomponentedeUISelectBooleanseasociaconunapropiedaddebeandejava.lang.Booleantipo,laimplementacinJavaServerFacesseconvertirautomticamentelosdatosdelcomponentedelacadenaenBoolean.Adems,algunosdatosdeloscomponentesdebenestarvinculadasalaspropiedadesdeuntipoparticular.Porejemplo,uncomponenteUISelectBooleandebeestarenlazadoaunapropiedaddetipobooleanojava.lang.Boolean.

    Avecespuedequedeseeconvertirlosdatosdeuncomponenteauntipodistintodeuntipoestndar,opuedequedeseeconvertirelformatodelosdatos.Parafacilitaresto,latecnologaJavaServerFaceslepermiteregistrarlaaplicacinConverterencomponentesUIOutputycomponentescuyasclasesUIOutputsubclase.SiseregistralaaplicacinConverterenuncomponente,laaplicacinConverterconviertelosdatosdelcomponenteentrelosdospuntosdevista.

    PuedeutilizarlosconvertidoresestndarsuministradosconlaimplementacinJavaServerFacesocrearsupropioconvertidorpersonalizado.Lacreacindeconvertidorpersonalizadoesuntemaavanzadoquesevermsadelante.

    3.5 Eventoyeloyentedemodelo JavaServerFaces2.0definetrestiposdeeventos:loseventosdeaplicacin,loseventosdelsistemaylosdatosdeeventosdemodelo.

    EventosdeaplicacinestnvinculadosaunaaplicacinenparticularysongeneradosporunUIComponent.EllosrepresentanelestndardeeventosdisponiblesenversionesanterioresdelatecnologaJavaServerFaces.

    Unobjetodeeventoidentificaelcomponentequegenereleventoyalmacenainformacinsobreelevento.Parasernotificadodeunevento,unaaplicacindebeproporcionarunaimplementacindelaclasedeescuchaydeberegistrarloenelcomponentequegeneraelevento.Cuandoelusuarioactivauncomponente,porejemplo,hacerclicenunbotn,sedisparaunevento.EstohacequelaimplementacinJavaServerFacesparainvocarelmtododeescuchaqueprocesaelevento.

    JavaServerFacessoportadostiposdeeventosdeaplicacin:eventosdeaccinydevaloreventosdecambio.

    Uneventodeaccin(ActionEventclase)seproducecuandoelusuarioactivauncomponentequeimplementeActionSource.Estoscomponentesincluyenbotonesyloshipervnculos.

    Uneventodecambiodevalor(ValueChangeEventclase)seproducecuandoelusuariocambiaelvalordeuncomponenterepresentadaporUIInputounodesussubclases.Unejemploeslaseleccindeunacasilladeverificacin,unaaccinqueresultaenelvalordelcomponenteestcambiandoatrue.LostiposdecomponentesquepuedegenerarestetipodeeventossonlosUIInput,UISelectOne,UISelectMany,yloscomponentesdeUISelectBoolean.Valoreventosdecambiosondespedidosslosinosedetectaronerroresdevalidacin.

    LossucesosdelsistemasongeneradosporunobjetoenlugardeunUIComponent.Quesegenerandurantelaejecucindeunaaplicacinentiempospredefinidos.Sonaplicablesatodalaaplicacinenlugardeauncomponenteespecfico.

    UnmodelodedatosdeeventosseproducecuandoseseleccionaunanuevafiladeuncomponentedeUIData.

    Lossucesosdelsistemaylosdatosdeeventosdemodelosontemasavanzadosquesemirarnmstarde.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina15/70

    1.1 Validacin LatecnologaJavaServerFacessoportaunmecanismoparalavalidacindelosdatoslocalesdeloscomponentesmodificables(comoloscamposdetexto).Estavalidacinseproduceantesdequeelmodelodedatoscorrespondienteseactualizaparaquecoincidaconelvalorlocal.

    Aligualqueelmodelodeconversin,elmodelodevalidacindefineunconjuntodeclasesestndarparalarealizacindecomprobacionesdevalidacindedatoscomunes.LaetiquetadeJavaServerFacesncleobibliotecatambindefineunconjuntodeetiquetasquecorrespondenalasimplementacionesestndardeValidator.

    Lamayoradelasetiquetastienenunconjuntodeatributosparaconfigurarlaspropiedadesdelvalidador,talescomolosvaloresmximoymnimopermitidosparalosdatosdelcomponente.Losregistrosdeautoreselvalidadorenuncomponenteporlaetiquetadeanidacindelvalidadordentrodelaetiquetadelcomponente.

    3.6 Modelodenavegacin ElmodelodenavegacinJavaServerFaceshacequeseafcildedefinirydenavegacindelapginaparamanejarcualquierprocesamientoadicionalquesenecesitaparaelegirlasecuenciaenlaquesecarganlaspginas.

    EnlatecnologaJavaServerFaces,lanavegacinesunconjuntodereglasparalaeleccindelapginasiguienteolavistaquesemostrardespusdeunaaccindeaplicacin,comocuandounbotnohipervnculosehaceclic.

    Estasnormassedeclaranenceroomsrecursosdeconfiguracindelaaplicacin,talescomo,utilizandounconjuntodeelementosXML.Laestructurapordefectodeunaregladenavegacineselsiguiente:

    EnJavaServerFaces2.0,lanavegacinpuedeserimplcitoodefinidosporelusuario.Lasreglasdenavegacinimplcitasentranenjuegocuandolasnormasdenavegacinnoestndisponiblesenunarchivodeconfiguracindelaaplicacinderecursos.

    3.6.1 Configuracindereglasdenavegacin Comoseexplicaenelmodelodenavegacin,lanavegacinesunconjuntodereglasparalaeleccindelasiguientepginaquesemuestradespusdeunbotnouncomponentedehipervnculosehaceclic.

    Lasreglasdenavegacinsedefinenenelexpedientedesolicitudderecursosdeconfiguracin.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina16/70

    Cadaregladenavegacinespecificacmonavegardeunapginaaunconjuntodeotraspginas.LaimplementacindeJavaServerFaceseligelaregladenavegacinadecuadodeacuerdoalapginaquesemuestraactualmente.

    Despusdelaregladenavegacinadecuadoesseleccionado,laeleccindequeparaaccederalapginasiguientedelapginaactualdependededosfactores:

    Elmtododeaccinqueseinvocacuandoelcomponentesehahechoclic Elresultadolgicoquesehacereferenciaporelcomponenteenlaetiqueta,ofuedevueltoporel

    mtododeaccin

    Elresultadopuedesercualquiercosaqueeldesarrolladordecide,perolatablaaquvanalgunosresultadosdeusocomnenaplicacionesweb.

    Final Loquesignificacomnmentesuccess Todohafuncionado.Iralapginasiguiente.failure Algoestmal.Iraunapginadeerror.logon Elusuariodebeiniciarsesinprimero.Iralapginadeiniciodesesin.noresults Labsquedanoencontraronnada.Iralapginadebsquedadenuevo.

    Normalmente,elmtododeaccinrealizaunprocesamientodelosdatosdelformulariodelapginaactual.

    Porejemplo,elmtodopodracomprobarsielnombredeusuarioylacontraseaintroducidaenelformulariodecoincidirconelnombredeusuarioycontraseaenelarchivo.Sicoinciden,elmtododevuelveelxitodelosresultados.Delocontrario,devuelvelafaltaderesultados.

    Comodemuestraesteejemplo,tantoelmtodoutilizadoparaprocesarlaaccinylosresultadosdevueltossonnecesariasparadeterminarlapginapropiadeacceso.

    Heaquunaregladenavegacinquepodranserutilizadosconelejemploqueacabamosdedescribir:

    /logon.jsp #{LogonForm.logon} success /storefront.jsp #{LogonForm.logon} failure /logon.jsp

    EstaregladenavegacindefinelasposiblesmanerasdenavegardelogOn.jsp.Cadaelementodenavegacincaso,defineunarutadenavegacinposibledelogOn.jsp.LanavegacinprimercasosedicequesiLogonForm.logondevuelveunresultadodexito,entoncesstorefront.jspsetendracceso.LanavegacinsegundocasosedicequelogOn.jspsevuelvenarepresentar,sivuelveLogonForm.logonfracaso.

    Laconfiguracindeunaaplicacin,elflujodelapginaconstadeunconjuntodereglasdenavegacin.

    Cadareglasedefineporelelementoderegladenavegacinenelarchivofacesconfig.xml.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina17/70

    Cadaelementoderegladenavegacincorrespondeaunidentificadordelcomponentearbreodefinidoporelfacultativodevistadeelementodeidentificacin.EstosignificaquecadaEstadodefinetodaslasposiblesmanerasdenavegardeunapginaespecialenlaaplicacin.

    Sinohayningnelementodelavistadeid,lasreglasdenavegacinsedefineenelelementoderegladenavegacinseaplicanatodaslaspginasdelaaplicacin.LaconcordanciadepatronesviewIDdeelementotambinpermitecomodn.Porejemplo,estedevistaIDdeelementodicequelaregladenavegacinseaplicaatodaslaspginaseneldirectoriodelibros: / libros / *

    Comoseindicaenlaregladenavegacinejemplo,unelementoderegladenavegacinpuedecontenerceroomselementosdenavegacincaso.Elelementodenavegacincaso,defineunconjuntodecriteriosdecoincidencia.Cuandosecumplenestoscriterios,laaplicacinsevayaalapginadefinidaporelaverIDdeelementocontenidoenlanavegacindelmismoelementodecaso.

    Loscriteriossondefinidosporlanavegacinopcionalderesultadosydeelementosdeaccin.Elresultadodeelementodefineunresultadolgico,comoelxito.Elelementodelaaccinmtodoutilizaunaexpresinparareferirseaunmtododeaccinquedevuelveunacadena,queeselresultadolgico.Elmtodorealizaalgunalgicaparadeterminarelresultadoydevuelveelresultado.

    Loselementosdenavegacincasodequesecotejarnconlosresultadosyelmtododeexpresinenesteorden:

    Loscasosqueespecificalavezunresultadodevalorydevalordelaaccin.Amboselementospuedenserutilizadossielmtododeaccindevuelveresultadosdiferentesdependiendodelresultadodelatransformacinquerealiza.

    Loscasosqueespecificaslounvalorderesultado.ElelementoderesultadodebecoincidirconelresultadoyaseadefinidoporelatributodeaccindelcomponentedeUICommandoelresultadodevueltoporelmtodomencionadoporelcomponentedeUICommand.

    Especificandoloscasosslounadevalordelaaccin.Estevalordebecoincidirconlaexpresinaccinespecificadaporlaetiquetadelcomponente.

    Cuandosecomparacualquieradeestoscasos,elrboldecomponentesdefinidosporelaverelementodeidentificacinsernseleccionadosparalarepresentacin.

    UsodeNetBeansIDE,puedeconfigurarunaregladenavegacindelasiguientemanera:

    1. DespusdeabrirsuproyectoenelIDENetBeans,expandaelnododelproyectoenelpaneldeProyectos.

    2. AmpliarlasPginasWebyWebnodosINFdelnododelproyecto.3. Hagadobleclicenfacesconfig.xml.4. Despusdefacesconfig.xmlseabreenelpaneldeleditor,hagaclicenelpaneldeleditor.5. SeleccioneJavaServerFaces,AddNavegacinartculo.6. EnelcuadrodedilogoAgregarnavegacinartculo:

    Introduzcaobusquelapginaquerepresentaelpuntodevistadepartidadeestaregladenavegacin.

    HagaclicenAgregar.7. Hagaclicdenuevoenelpaneldeleditor.8. SeleccioneJavaServerFaces,UIAadirNavegacinasunto.9. EnelcuadroAgregarnavegacinasuntodedilogo:

    DesdeelmenVer,seleccionelapginaquerepresentaelpuntodevistadepartidaparalaregladenavegacin(enelpaso6a).

    (opcional)Enelcampodeaccin,escribaelmtododeaccinseinvocacuandoelcomponentequeseactivalanavegacinactiva.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina18/70

    (opcional)Enelcampoderesultados,escribalacadenaresultadolgicodequelasreferenciascomponenteactivodesuatributodeaccin.

    DelaAmenVer,seleccioneobusquelapginaqueseabrirsiestecasodenavegacinesseleccionadoporelsistemadenavegacin.

    HagaclicenAgregar.

    3.6.2 Reglasdenavegacinimplcitas ApartirdeJavaServerFaces2.0,lasreglasdenavegacinimplcitaestndisponiblesparaaplicacionesdeFacelets.Lasreglasdenavegacinimplcitaentrarenjuegosinohayreglasdenavegacinseconfiguranenlosarchivosdeconfiguracinderecursosdeaplicacin.

    Cuandoseagregauncomponentedeinterfazdeusuariocomouncomandoyasignaunapginacomoelvalordesupropiedadlaaccin,elcontroladordenavegacinpordefectotratandecombinarunapginaadecuadadentrodelaaplicacin.

    Enelejemploanterior,elcontroladordenavegacinpordefectotratardelocalizarlapginaresponse.xhtmlynavegarhacial.

    3.7 BackedBeans UnaaplicacintpicadeJavaServerFacesincluyeunoomsbeansdeapoyo,cadaunodeellosesunJavaServerFacesgestionadosdebeanqueestasociadoconloscomponentesdelainterfazdeusuarioutilizadosenunadeterminadapgina.

    LosbeansGestionadosonJavaBeanscomponentesquesepuedenconfigurarmediantelainstalacindebeangestionado,quesedescribeenConfiguracindeBeans.Estaseccinpresentalosconceptosbsicossobrelacreacin,configuracinyusodesemillasdeapoyoenunaaplicacin.

    3.7.1 Crearunaclasedebeanderespaldo Ademsdedefinirunconstructorsinargumento,comotodosloscomponentesJavaBeansdebehacer,unaclasedebeanderespaldotambindefineunconjuntodepropiedadesdeloscomponentesdeinterfazdeusuarioy,posiblemente,unconjuntodemtodosquerealizanfuncionesdeuncomponente.

    Cadaunadelaspropiedadesdeloscomponentessepuedenenlazaraunadelassiguientes: Elvalordeuncomponente Unainstanciadecomponente Unejemplodelconvertidor Unejemplodeescucha Unejemplodevalidador

    Lasfuncionesmscomunesquelosmtodosdebackedbeanrealizarsonlassiguientes: Validarlosdatosdeuncomponente Manejodeuneventodisparadoporuncomponentede Realizacindetratamientoparadeterminarlasiguientepginaparaquelasolicituddebe

    navegar

    ComocontodosloscomponentesJavaBeans,unapropiedadconstadeuncampodedatosprivadosyunconjuntodemtodosdeacceso,comolomuestraestecdigo:

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina19/70

    UserNumber Integer = null;...setUserNumber public void (Integer user_number) ( = userNumber user_number; )getUserNumber public Integer () ( userNumber retorno;)public String getResponse () ( ...)

    Cuandounapropiedaddebeanestligadaalvalordeuncomponente,puedesercualquieradelostiposbsicosprimitivosynumricoocualquiertipodeobjetodeJavaparaquelaaplicacintengaaccesoaunconvertidorapropiado.Porejemplo,unapropiedadpuedeserdetipofecha,silaaplicacintieneaccesoaunconvertidorquepuedeconvertireltipodefechaenunacadenayviceversa.

    Cuandounapropiedadseuneaunainstanciadelcomponente,eltipodelapropiedaddebeserelmismoqueelobjetodecomponentes.Porejemplo,siunUISelectBooleanestligadoalapropiedad,lapropiedaddebeaceptarydevolverunobjetoUISelectBoolean.

    Delmismomodo,silapropiedadestenlazadoaunconvertidor,validador,oeloyenteejemplo,lapropiedaddebeserdelconvertidorcaso,validador,oeloyentetipo.

    3.7.2 ConfiguracindeunBean LatecnologaJavaServerFacessoportaunsofisticadoestablecimientoadministradoporlacreacindebean,quepermitealosarquitectosdeaplicacionesparahacerlosiguiente:

    Configurarbeanssimpleyrbolesmscomplejodebeans Inicializarelbeanconlosvalores Ponerlosbeansenunmbitoparticular(mbitosdisponibles:request,view,session,application) ExponelosbeansalaELunificadaparaquelosautoresdepginassepuedeaccederaellos

    Elsiguienteejemplomuestraunejemplodearchivofacesconfig.xml:

    UserNumberBean guessNumber.UserNumberBean sesin mnimos largo 0 largo 10

    LaimplementacindeJavaServerFacesprocesalaelementoenelmomentodeiniciodelaaplicacin.Cuandounbeanesllamadolaprimeravezdelapgina,secreaunainstancia.

    UnautordelapginapuedeaccederalaspropiedadesdebeandelasetiquetasdecomponentesenlapginautilizandoelELunificada,comosemuestraaqu:

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina20/70

    Tambinesposibleaprovecharlafuncindeanotacionesparaelbeanlogradoevitarlaconfiguracindebeangestionadoenarchivodeconfiguracinderecursosdeaplicacin.

    Ejemplo:@ManagedBean(name = "Login")@RequestScopedpublic class Login {...}

    3.8 UsandoelELunificadaparareferenciarBackedbeans Paraobligaralosvaloresdelainterfazdeusuariodeloscomponentesypropiedadesdelosobjetosalapoyodebeanoderespaldoparahacerreferenciaalosmtodosdebeandeetiquetasdecomponentesdeinterfazdeusuario,losautoresdepginasutilizarellenguajedeexpresinunificada(EL)sintaxisdefinidaporJSP2.1.

    Lassiguientessonalgunasdelascaractersticasqueofreceestelenguaje: Evaluacindiferidadelasexpresiones Lacapacidaddeusarunaexpresindevalortantoparaleeryescribirdatos Expresindemtodos

    EstascaractersticassonespecialmenteimportantesparaapoyarelmodelodeinterfazdeusuariosofisticadocomponentequeofrecelatecnologaJavaServerFaces.

    EvaluacindiferidadelasexpresionesesimportanteporqueelciclodevidadeJavaServerFacesestdivididoenfasesdistintas,demaneraqueelmanejodeeventosdecomponentes,laconversindedatosyvalidacin,ylapropagacindedatosalosobjetosexternos,serealizanenformaordenada.Laaplicacindebesercapazderetrasarlaevaluacindelasexpresiones,hastalafaseapropiadadelciclodevidasehaalcanzado.Porlotanto,suetiquetadeatributossiempreutilizalasintaxisdelaevaluacindiferida,quesedistingueporeldelimitador#().ElCiclodeVidadeunapginaJavaServerFacesdescribeelciclodevidaendetalle.

    Conelfindealmacenardatosenlosobjetosexternos,casitodoslosatributosdeetiquetasJavaServerFacesutilizarexpresionesdevalorvalor,quesonexpresionesquepermitentantoobteneryestablecerdatossobrelosobjetosexternos.

    Porltimo,algunosatributosdeetiquetadecomponentedeaceptarexpresionesmtodoquelosmtodosdereferenciaparacontrolarloseventosdecomponentes,ovalidaroconvertirlosdatosdeloscomponentes.

    ParailustrarunaetiquetadeJavaServerFacesusandoelELunificado,supongamosqueunaetiquetadeunasolicituddereferenciaaunmtodopararealizarlavalidacindeentradadeusuario:

    EstaetiquetaseuneelvalordelcomponenteuserNoparaelbeandelapropiedadUserNumberBean.userNumberutilizandounaexpresinvalue.SeutilizaunmtododeexpresinparahacerreferenciaalmtododeUserNumberBean.validate,querealizalavalidacindevalorlocaldelcomponente.Elvalorlocalesloqueelusuarioentraenelcampocorrespondienteaestaetiqueta.Estemtodoseinvocacuandoseevalalaexpresin,queesdurantelafasedevalidacindelprocesodelciclodevida.

    CasitodoslosatributosdeetiquetasJavaServerFacesaceptarexpresionesdevalor.Ademsdelaspropiedadesjudasdereferencias,expresionesdevalorpuedetambinlistasdereferencias,mapas,paneles,objetosimplcita,ylospaquetesderecursos.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina21/70

    Otrousodelasexpresionesdevalorvinculanteesunainstanciadelcomponenteaunapropiedaddebackedbean.Unautordelapginahacereferenciaalapropiedaddelatributo:

    EsasetiquetasdecomponentesquelasexpresionesmtododeusosonlasetiquetasylasetiquetasdecomponentesUIInputcomponenteUICommand.

    3.8.1 ElCiclodeVidadeunapginaJavaServerFaces ElciclodevidadeunapginaJavaServerFacesesalgosimilaraladeunapginaJSP:ElclienterealizaunasolicitudHTTPdelapginayelservidorrespondeconlapginatraducidaaHTML.Sinembargo,elciclodevidadeJavaServerFacesdifieredelciclodevidadeJSPenquesedivideenvariasfasesparaapoyarelmodelodeinterfazdeusuariosofisticadocomponente.Estemodelorequierequeloselementosdeserconvertidosyvalidados,eventosdeloscomponentessemanipulan,ylosdatosdeloscomponentessepropagaalasjudasenunamaneraordenada.

    UnapginadeJavaServerFacesestambindiferentedeunapginaJSPenlaqueesrepresentadoporunrboldecomponentesdeinterfazdeusuario,denominadopuntodevista.Duranteelciclodevida,laimplementacinJavaServerFacesdebeconstruirelpuntodevistaalconsiderarelestadoguardadodeunapresentacinanteriordelapgina.Cuandoelclienteenvaunapgina,laimplementacinJavaServerFacesrealizavariastareas,talescomolavalidacindelaentradadedatosdeloscomponentesdelavistaylaconversindelosdatosdeentradaalostiposespecificadosenelladodelservidor.

    LaimplementacindeJavaServerFacesrealizatodasestastareascomounaseriedepasosenlasolicituddeJavaServerFacesciclodevidaderespuesta.

    DiagramadeflujodelasolicituddeFacesyrespuestadeFaces,incluyendoeleventodevalidacinyelprocesamiento,manejodeerrores,elmodelodeactualizacin,lainvocacindelaaplicacin.

    Elciclodevidamanejaambostiposdesolicitudes:Lassolicitudesinicialesydevolucionesdedatos.

    Cuandounusuariohaceunasolicitudinicialdeunapgina,loellaestsolicitandolapginaporprimeravez.Cuandounusuarioejecutaunadevolucindedatos,seleenvaelformularioquefiguraen

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina22/70

    unapginaquefuepreviamentecargadoenelnavegadorcomoresultadodelaejecucindeunasolicitudinicial.

    Cuandoelciclodevidaseencargadelapeticininicial,sloseejecutalarestauracindevistayhacerquelasfasesderespuesta,porquenohayningunaentradadelusuariooaccionesparaelproceso.Porelcontrario,cuandoelciclodevidamanejaunadevolucindedatos,ejecutatodaslasfases.

    Normalmente,laprimerasolicitudparaunapginaJavaServerFacestratadeuncliente,comoresultadodehacerclicenunhipervnculoenunapginaHTMLqueenlazaconlapginadeJavaServerFaces.

    ParahacerunarespuestaqueesotrapginaJavaServerFaces,laaplicacincreaunanuevavisinylaalmacenaenlainstanciaFacesContext,querepresentaatodalainformacincontextualasociadaconelprocesamientodeunasolicitudentranteycrearunarespuesta.LaaplicacinseadquierereferenciasaobjetosquenecesitalaopininysolicitaFacesContext.renderResponse,queobligaalaprestacininmediatadelaopinindepasarporlarespuestaalafasedeprocesamientodelciclodevida,comoindicanlasflechasetiquetadosRenderderespuestaeneldiagrama.

    Aveces,unaaplicacinpodranecesidaddereorientarlosrecursosadiferentesaplicacionesweb,comounservicioweb,ogenerarunarespuestaquenocontienecomponentesJavaServerFaces.Enestassituaciones,eldesarrolladordebesaltarselafasederenderizado(RenderFasederespuesta)llamandoFacesContext.responseComplete.Estasituacintambinsemuestraeneldiagrama,estavezconlasflechasdelaetiquetarespuestacompleta.

    LapropiedaddelacurrentPhaseIDFacesContext,querepresentalafasequeseencuentra,debeseractualizadatanprontocomoseaposibleporlaaplicacin.

    LasituacinmscomnesqueuncomponenteJavaServerFacespresentaunasolicituddelapginadeotroJavaServerFaces.Enestecaso,laimplementacinJavaServerFacesmanejalasolicitudyautomticamentepasaatravsdelasfasesdelciclodevidapararealizarcualquierconversinnecesaria,validacionesyactualizacindelosmodelos,yparagenerarlarespuesta.

    Losdetallesdelciclodevidaseexplicaenestaseccinestndestinadosprincipalmenteparadesarrolladoresquenecesitanconocerdichainformacincomocuandovalidaciones,conversiones,yloseventossongeneralmentetramitadasyloquepuedenhacerparacambiarcmoycundoselesda.Losautoresdepginasnotienenporquconocerlosdetallesdelciclodevida.

    3.8.2 Fasederestauracindevista CuandounasolicituddeunapginaJavaServerFacessehace,comocuandounenlaceounbotnsepresiona,laimplementacinJavaServerFacescomienzalafasederestauracindevista.

    Duranteestafase,laimplementacinJavaServerFacesconstruyeelpuntodevistadelapgina,cablescontroladoresdeeventosylosvalidadoresdeloscomponentesenlavista,yguardalavistaenelejemploFacesContext,quecontienetodalainformacinnecesariaparaprocesarunasolicitudnica.Todaslasetiquetasdecomponentesdelaaplicacin,loscontroladoresdeeventos,convertidoresyvalidadoresdeteneraccesoalainstanciadeFacesContext.

    Silasolicituddelapginaesunasolicitudinicial,laimplementacinJavaServerFacescreaunavisindevacoenestaetapaylosavancesdelciclodevidaparahacerlafasederespuesta,duranteelcuallaopinindevacosellenaconloscomponentesdereferenciadelasetiquetasenlapgina.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina23/70

    Silasolicituddelapginaesunadevolucindedatos,unavistacorrespondienteaestapginayaexiste.Duranteestafase,laimplementacinJavaServerFacesrestauralavistamedianteelusodelainformacindeestadoguardadaenelclienteoelservidor.

    3.8.3 Fasedeaplicacindevalores Despusdequeelrboldecomponentesqueserestablezca,cadacomponenteenelrboldelosextractosdesunuevovalordelosparmetrosdelapeticinmedianteelusodesudecodificar(processDecodes())mtodo.Elvalorsealmacenalocalmenteenelcomponente.Silaconversindelvalordefalla,unmensajedeerrorqueestasociadoconelcomponentesegenerayenlacolaenFacesContext.Estemensajesemostrardurantelafasededarrespuesta,juntoconloserroresdevalidacinresultantedelafasedevalidacindelproceso.

    SilosmtodosdescifrarodetectoresdeeventosllamadorenderResponseFacesContextenlainstanciaactual,laimplementacinJavaServerFacessaltaalafasededarrespuesta.

    Silosacontecimientossehancoladuranteestafase,lasemisionesdeaplicacinJavaServerFaceslosacontecimientosalosoyentesinteresados.

    Sialgunoscomponentesdelapginatienensusatributosdeinmediatoestableceentrue,entonceslavalidacin,laconversin,yloseventosrelacionadosconestoscomponentesserntratadosduranteestafase.

    Enestepunto,silasolicitudtienequereorientarlosrecursosadiferentesaplicacioneswebodegenerarunarespuestaquenocontienecomponentesJavaServerFaces,puedellamaraFacesContext.responseComplete.

    Alfinaldeestafase,loscomponentessefijanasusnuevosvalores,ylosmensajesyeventossehanpuestoencola.

    Silapeticinactualseidentificacomounapeticinparcial,elcontextoparcialserecuperadelascarasdecontextoyelmtododetransformacinparcialesaplicado.

    3.8.4 Fasedevalidacionesdeproceso Duranteestafase,laimplementacinJavaServerFacesprocesatodoslosvalidadoresregistradasenloscomponentesenelrbol,mediantesuvalidacin((processValidators))mtodo.Seexaminaelcomponentedeatributosqueespecificanlasnormasparalavalidacinycomparaestasnormasparaelvalorlocalalmacenadoparaelcomponente.

    Sielvalorlocalnoesvlido,laimplementacinJavaServerFacesaadeunmensajedeerroralainstanciaFacesContext,yelciclodevidaavanzadirectamentealafasededarrespuestaparaquelapginaserepresentaconelmensajedeerror.Sihuboerroresdeconversindelasolicituddeaplicarlosvaloresdefase,losmensajesdeestoserrorestambinsemuestran.

    SialgunavalidarmtodosodetectoresdeeventosllamadorenderResponseenelFacesContextactual,laimplementacinJavaServerFacessaltaalafasededarrespuesta.

    Enestepunto,silasolicitudtienequereorientarlosrecursosadiferentesaplicacioneswebodegenerarunarespuestaquenocontienecomponentesJavaServerFaces,puedellamaraFacesContext.responseComplete.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina24/70

    Silosacontecimientossehancoladuranteestafase,laimplementacinJavaServerFacesemisionesaoyentesinteresados.

    Silapeticinactualseidentificacomounapeticinparcial,elcontextoparcialserecuperadelascarasdecontextoyelmtododetransformacinparcialesaplicado.ProcesamientoparcialestcubiertoenJavaEE6Tutorial,VolumenII:Temasavanzados.

    3.8.5 Fasedeactualizacindevaloresdemodelo DespusdelaimplementacinJavaServerFacesdeterminaquelosdatossonvlidos,sepuederecorrerelrboldecomponentesyestablecerelservidorcorrespondientedelaspropiedadesdelobjetodeladoalosvaloreslocalesdeloscomponentes.LaimplementacindeJavaServerFacesactualizarslolaspropiedadesjudasapuntadoporuncomponentedevalordeatributodeentrada.Silosdatoslocalesnopuedenserconvertidosalostiposespecificadosporlaspropiedadesjudas,elciclodevidaavanzadirectamentealafasededarrespuestaparaquelapginaesreemitidaconerroresmostrados.Estoessimilaraloquesucedeconloserroresdevalidacin.

    SilosmtodosupdateModelsocualquieroyentesllamadorenderResponseFacesContextenlainstanciaactual,laimplementacinJavaServerFacessaltaalafasededarrespuesta.

    Enestepunto,silasolicitudtienequereorientarlosrecursosadiferentesaplicacioneswebodegenerarunarespuestaquenocontienecomponentesJavaServerFaces,puedellamaraFacesContext.responseComplete.

    Silosacontecimientossehancoladuranteestafase,laimplementacinJavaServerFacesemisionesaoyentesinteresados.

    Silapeticinactualseidentificacomounapeticinparcial,elcontextoparcialserecuperadelascarasdecontextoyelmtododetransformacinparcialesaplicado.ProcesamientoparcialestcubiertoenJavaEE6Tutorial,VolumenII:Temasavanzados.

    3.8.6 Fasedeinvocacindelaaplicacin Duranteestafase,laimplementacinJavaServerFacesmanejacualquiersolicituddeeventosdenivel,talescomolapresentacindeunformularioounvnculoaotrapgina.

    Enestepunto,silasolicitudtienequereorientarlosrecursosadiferentesaplicacioneswebodegenerarunarespuestaquenocontienecomponentesJavaServerFaces,puedellamaraFacesContext.responseComplete.

    Siseprocesaelpuntodevistafuereconstruidoapartirdeinformacindeestadodeunasolicitudanteriorysiuncomponentehadisparadounevento,estoseventossetransmitenalosoyentesinteresados.

    Porltimo,lastransferenciasdeJavaServerFacesaplicacindecontrolparahacerquelafasederespuesta.

    3.8.7 Fasedecreacindelarespuesta Duranteestafase,JavaServerFacesconstruyeelpuntodevistaydelegalaautoridadparaelrenderizadodelaspginas.Porejemplo,paraelcontenedordeJSPsilaaplicacineslautilizacindepginasJSP.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina25/70

    Sisetratadeunasolicitudinicial,loscomponentesqueestnrepresentadosenlapginaseagregaalrboldecomponentes.Siestonoesunasolicitudinicial,loscomponentesseaadenyaalrbolparaquenosenecesitaaadirms.

    Silasolicitudesunadevolucindedatosyloserroresfueronencontradosdurantelafasedesolicituddeaplicarlosvalores,lasvalidacionesdeprocesodefase,ofasedeactualizacindelosvaloresdelmodelo,lapginaoriginalserepresentaenestafase.Silaspginascontienenmensajesolosmensajesdelasetiquetas,losmensajesdeerrorenlacolasemuestranenlapgina.

    Despusdequeelcontenidodelavistaserepresenta,elestadodelarespuestaseguardaparaquelassolicitudesposterioressepuedeaccederal.Elestadoguardadoseestadisposicindelafasederestauracindevista.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina26/70

    4 ExpresionesEL4.1 InformacingeneralsobreEL

    EllenguajedeexpresinunificadapermitealosautoresdepginasutilizarexpresionessencillasparaaccederalosdatosdeformadinmicaapartirdecomponentesJavaBeans.

    LatecnologaJavaServerFacesutilizaELparalassiguientesfunciones: Evaluacindiferidaeinmediatadelasexpresiones Lacapacidaddeestablecer,ascomoobtenerdatos Lacapacidaddeinvocarlosmtodos

    Enresumen,ellenguajedeexpresinunificadaproporcionaunamaneradeutilizarexpresionessencillasparallevaracabolassiguientestareas:

    LeerdemaneradinmicalosdatosdeaplicacionesalmacenadosenJavaBeans,diversasestructurasdedatos,yobjetosimplcita

    Escribirdemaneradinmicalosdatos,talescomolaentradadelusuarioenlosformularios,aloscomponentesdeJavaBeans

    Invocacindemtodosarbitrariosestticaypblica Realizaroperacionesaritmticasdemaneradinmica

    4.2 Evaluacininmediataydiferida ELapoyalaevaluacin,tantoinmediatosydiferidosdelasexpresiones.Laevaluacininmediataseentiendequelaexpresinseevalayelresultadoesdevueltoinmediatamentecuandolapginaserepresentaporprimeravez.Evaluacindiferidasignificaquelatecnologaqueutilizaellenguajedeexpresionespuedenemplearsupropiomecanismoparaevaluarlaexpresinenalgnmomentomstarde,duranteelciclodevidadelapgina,ocuandoseaapropiadohacerlo.

    Esasexpresionesqueseevalandeinmediatoelusode${}sintaxis.Expresionescuyaevaluacinsehacedemaneradiferidautilizarel#{}sintaxis.

    Debidoasuciclodevidadevariasfases,latecnologaJavaServerFacesusaprincipalmenteexpresionesdeevaluacindiferida.Duranteelciclodevida,loseventosdecomponentessemanejan,losdatossonvalidados,yotrastareasqueserealizanenunordendeterminado.Porlotanto,unaaplicacinJavaServerFacesdebediferirlaevaluacindelasexpresiones,hastaelpuntoapropiadoenelciclodevida.

    4.2.1 EvaluacinInmediata Todaslasexpresionesutilizandolasintaxis${}seevalandeinmediato.Estasexpresionesslopuedenserutilizadosdentrodeunaplantilladetextoocomoelvalordeunatributodeetiquetaquepuedeaceptarlasexpresionesentiempodeejecucin.

    Elsiguienteejemplomuestraunaetiquetadereferenciacuyovaloratribuirunaexpresindeevaluacininmediataqueobtieneelpreciototaldelasesinbeandenombredecart:

    LaimplementacindeJavaServerFacesevalalaexpresin,${sessionScope.cart.total},loconvierteypasaelvalordevueltoalcontroladordeetiqueta.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina27/70

    Expresionesdeevaluacininmediatasonsiempredeslolecturaexpresionesdevalor.Laexpresinejemploanteriorslosepuedeobtenerelpreciototaldecompradelgrano,nopuedeestablecerelpreciototal.

    4.2.2 Evaluacindiferida Expresionesdeevaluacindiferidaadoptarlaforma#{expr}ypuedeserevaluadoenotrasfasesdeunciclodevidadepginatalcomosedefineporloquelatecnologaeselusodelaexpresin.EnelcasodelatecnologaJavaServerFaces,sucontroladorpuedeevaluarlaexpresinenlasdiferentesfasesdelciclodevidaenfuncindecmolaexpresinseutilizaenlapgina.

    ElsiguienteejemplomuestraunaetiquetadeJavaServerFacesinputText,loquerepresentauncomponentecampodetextoenelqueunusuariointroduceunvalor.LaetiquetainputText,referenciaselvalordeunatributodeexpresindeevaluacindiferidaqueapuntaalapropiedadnamedelbeancustomer.

    Paraqueunasolicitudinicialdelapginaquecontieneunaetiqueta,laimplementacinJavaServerFacesevalalaexpresin#{customer.name}durantelafasedeRebderresponsedelciclodevida.Duranteestafase,laexpresinslotieneaccesoalvalordelnombredelcliente,comosehaceenlaevaluacininmediata.

    Paraunasolicituddedevolucindedatos,laimplementacinJavaServerFacesevalalaexpresinenlasdiferentesfasesdelciclodevida,durantelacualelvalorserecuperadelasolicitud,validados,yreproducidasenelbeandelcliente.

    Comosemuestraenesteejemplo,lasexpresionesdeevaluacindiferidapuedenserexpresionesdevalorquesepuedeutilizarparaleeryescribirdatos.Tambinpuedenserexpresionesmtodo.Expresionesdevalor(tantoinmediatoscomodiferidos)ylasexpresionesmtodoseexplicaenlasiguienteseccin.

    4.3 Valoryelmtododeexpresiones LaELsedefinendostiposdeexpresiones:expresionesdevaloryexpresionesmtodo.Expresionesdevalorpuedeproducirunvaloroestablecerunvalor.Expresionesmtodosllamaametodosquepuedenserinvocadoypuededevolverunvalor.

    4.4 Operadores Ademsdel.y[],ellenguajedeexpresinunificadoproporcionalossiguientesoperadores,quepuedenserutilizadosenexpresionesrvalueslo:

    Aritmtica:+,(binario),*,/ydiv,%yelmod,(unario) Lgicos:AND,&&,o,||,not,! Relacionales:==,eq,!=,ne,,gt,=,le.Sepuedenhacercomparacionesconotros

    valores,ocontraBoolean,String,enterooflotante. Vaco:Eloperadordevacoesunaoperacindeprefijoquepuedeusarseparadeterminarsiun

    valoresnuloovaco. Condicional:A?B:C.EvaluarBoC,dependiendodelresultadodelaevaluacindeA.

    Laprecedenciadelosoperadoresdemayoramenor,deizquierdaaderechaescomosigue: []. ()(Utilizadoparacambiarlaprioridaddelosoperadores) (Unario)not!empty

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina28/70

    /divmod% +(Binario) =ltgtlege ==!=eqne &&and ||or ?:

    4.5 Palabrasreservadas Laspalabrassiguientesestnreservadasparaellenguajedeexpresinunificadaynodebeutilizarsecomoidentificadores.

    and or not eq

    ne lt gt le

    ge true false null

    instanceof empty div mod

    4.6 EjemplosdeusodeEL

    Ejemplo Descripcin#(myBean.value) Devuelveelvalordelapropiedaddelobjetoalmacenadoenlaclavede

    myBean,oelelementoalmacenadoenelvalordelaclave,simyBeanesdetipoMap

    #(myBean['value']) Igualque"myBean.value(#)".#(myArrayList[5]) Devuelveelquintoelementodeunalistaquesealmacenaenlaclavede

    myArrayList.#(myMap['foo']) Devuelveelobjetoalmacenadoenlaclavefoodelmapaalmacenadoen

    myMap.#(myMap[foo.bar]) Devuelveelobjetoalmacenadoenlaclavequeesigualalvalordela

    expresinfoo.bardelmapaalmacenadoenmyMap.#(myMap['foo'].valor) Devuelveelvalordelapropiedaddelosobjetosalmacenadosenlaclavede

    foodemyMap.#(myMap['foo'].valor[5]) Devuelveelquintoelementodelalistaomatrizalmacenadaenlaclavede

    myMapclave.#()miCadena DevuelvelacadenadeobjetosalmacenadosenelmarcodelmiCadena

    clave.#()myInteger DevuelveelenteroobjetoalmacenadoenelmarcodelmyIntegerclave.#(user.role=='normal') Devuelvetruesielpapeldelapropiedaddelobjetoalmacenadoenlaclave

    deelusuarioesigualalanormalidad.Devuelvefalseencasocontrario.#((user.balance200) Sielvalordelapropiedaddeequilibriodelobjetoalmacenadoenelmarco

    delclavedeusuariomenos200igualacero,devuelvetrue.DevolucionesOTHfalsos

    Hola#()user.name! Devuelvelacadena"Hola",seguidadelnombredelapropiedaddelobjetoalmacenadosenlaclavedeusuario.AsquesielnombredelusuarioesSean,esto"retornoHolaSean!"

    Ests#((user.balance>100)?"cargado":"nocargado')

    Devuelvelacadena"Ustedestcargado"silapropiedaddeequilibriodelaobjetoalmacenadoenlaclavedeusuarioesmayorde100;devuelve"Ustednosecargan"deotramanera.

    #()myBean.methodName DevuelveelmtodollamadomtododelobjetoalmacenadoenelmarcodelmyBeanclave.

    #(20+3) Devuelve23.

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina29/70

    5 JSTLLibrerasestndarTaglib5.1 Introduccin ExistenvariaslibrerasTaglibdisponibleparaJSPyJSF.

    FuntionalArea URI Prefix Example

    Core http://java.sun.com/jsp/jstl/core c

    XMLprocessing http://java.sun.com/jsp/jstl/xml x

    I18Ncapableformatting http://java.sun.com/jsp/jstl/fmt fmt

    Databaseaccess(SQL) http://java.sun.com/jsp/jstl/sql sql

    Functions http://java.sun.com/jsp/jstl/functions fn fn:functionName(...)

    5.2 Core ELseutilizaenlabibliotecadeetiquetasCore.LaetiquetadelosproductosevaluacindelaexpresinELparaelJspWriteractual.EstoessimilarenfuncionalidadaJSP.Lautilizacinsehaceas:

    Tambinesposibleestableceryeliminarlasvariablesdembito.Elmbitodeaplicacinpredeterminadoqueseutilizaeslapgina.Porejemplo,podemosdefinirunavariablellamadaalmbitodeaplicacindelclientemedianteelusode

  • CursodeJSP Pagina30/70

    EstasaccionesdeapoyoatodoslostiposestndarderecogidadeJ2SE,incluyendolalista,LinkedList,ArrayList,Vector,Stack,ySet.Estoincluyetambinlosobjetosjava.util.MapcomoHashMap,Hashtable,Properites,Providers,yAtributes.Tambinpuedeiterarsobreunconjuntodeobjetosodetiposprimitivos.Alutilizarlostiposprimitivos,elelementoactualqueestenvueltoconlaclasecontenedoradeJava.Asqueelelementoactualdeunamatrizdeenterosqueserunentero.Dosobjetosseexportanparacadaiteracin,elelementoactualyelestadodelaiteracin.Veamoselsiguienteejemplo:

    Enesteejemplo,laColeccinsehaespecificadoporelELcomoproductos.Eltemaactualescontenidaenelproductovariable.ElestadoactualdelaiteracinsecelebraenelestadodelobjetovarStatus.Muysencillo.

    5.4 AccionesdeURL Ademsdelasaccionesderepeticin,labibliotecatambinofreceaccionesrelacionadasconURL.Estoincluyeapoyoparaloshipervnculos,lasimportacionesderecursos,yredireccionamientos.UsodelaetiquetamanejalareescrituradeURLylacodificacinautomtica.SinosfijamosenelejemplodeunaURLconunparmetroyluegousarlaenunenlace,puedesercomoeste:

    Register

    ElusodelasimportacionesderecursostambinsehicieronmspoderososconelJSTL.Ahoraesposibleespecificarrutasabsolutas,relativas,enrelacinconladireccindeuncontextoexterior,ylosrecursosdeFTP.Echemosunvistazoaunpardeejemplos:

    URLabsoluta: RelativaURL(paraelcontextoactual): URLrelacionadaconuncontextoexterior: RecursosFTP:

    Delosejemplosanteriores,esobvioqueproporcionamspotenciaqueconun,sinembargo,tambinhayotrasrazonesparautilizarlasetiquetas.HaymejorasenelcontenidodelosrecursosdebufferenlaJSTLqueeliminarelbufferinnecesarios.

    5.5 Condicionales JSTLescompatibleconunacondicionalsimpleetiquetajuntoconunacoleccindeetiquetas,,yqueelapoyodeloscondicionalesmutuamenteexcluyentes.Estosltimostresetiquetaspermitenaplicaruntpicoif/elseif/elseifestructuray/olosdems.

    UtilizandoellenguajedeexpresinenlasaccionescondicionaltambinpuedeserunmecanismopoderosoparasimplificarelcdigoJSP.Alutilizareletiqueta,esposibleconstruirexpresiones

    CopyrightCdricSimon,2009 Versin1.0 Reproduccinprohibida

  • CursodeJSP Pagina31/70

    condicionalessimples.Porejemplo,medianteelaccesoaunapropiedaddeobjetos,as:

  • CursodeJSP Pagina32/70

    Parademostrar:seralasalida"12,30".

    Fechasyhorariossemanejanutilizandola, , , y .

    5.7 Accesoabasesdedatos Lasbasesdedatosrelacionalesdefcilaccesomediantelasaccione