P1C5 Lenguaje de Expresiones
-
Upload
aurelio-martin-obando-tavara -
Category
Education
-
view
2.144 -
download
1
description
Transcript of P1C5 Lenguaje de Expresiones
![Page 2: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/2.jpg)
AGENDA- Accediendo a propiedades simples- Accediendo a propiedades embebidas- Enviando propiedades- Accediendo a colecciones- Resumen Clase 05
1
![Page 3: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/3.jpg)
2 CONTENIDO
![Page 4: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/4.jpg)
Punt
os P
rinci
pale
sEn facelets no soporta script JSP
De este modo, necesitamos una maneraEjemplos
#{employee.firstName}Invoca el método getFirstName() del bean administrado «employee» y lo muestra.
<h:inputText value=«#{employee.firstName}» />Cuando el formulario es mostrado, se invoca getFirstName()Cuando el formulario es enviado, valida si el valor es OK, pasa el valor a setFirstName(…)
#{employee.addresses[0].zip}Invoca el método getAddresses del bean administrado «employee» (el cual debería retornar un arreglo o una lista), luego toma el primer valor, luego invoca el método getZip() del primer valor y lo muestra.
![Page 5: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/5.jpg)
Vent
ajas
del
Len
guaj
e de
Ex
pres
ione
s (M
uy Im
port
ante
)Notación corta para las propiedades del bean administrado
Para referenciar el resultado del método getCompanyName() del bean administrado «company», se usaría #{company.companyName}Para referenciar la propiedad firstName de la propiedad president del bean administrado «company», usaría #{company.president.firstName}
Acceso simple a los elementos de una colecciónPara referenciar un elemento de un arreglo, List o Map, se usaría #{someBean.array[indexOrKey]}
![Page 6: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/6.jpg)
Vent
ajas
del
Len
guaj
e de
Ex
pres
ione
s (Im
port
ante
)Un set de operadores simples muy útil
Para manipular objetos dentro del Lenguaje de Expresiones, se puede usar cualquiera de muchos operadores aritméticos, relacionales, lógicos o empty-string que existen
Condicional de muestraExisten dos opciones para mostrar uno de muchos resultados
#{test ? option1 : option2}<h:outputText … rendered=«#{test}» />
![Page 7: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/7.jpg)
Vent
ajas
del
Len
guaj
e de
Ex
pres
ione
s (N
o Ta
n Im
port
ante
)Variables predefinidas (objetos implícitos)
Para acceder a parámetros de request, cookies, HTTP headers y otros tipos de estándar de datos request, se pueden usar uno de los muchos objetos implícitos predefinidos.
Paso de argumentosLa versión 2.1 de EL permite el paso arbitrario de argumentos a los métodos. Funciona únicamente en los servidores Java EE 6.
«Mensajes vacíos» en vez de mensajes de errorEn la mayoría de los casos, valores nulos o NullPointerExceptions terminan como «mensajes vacíos» y no excepciones lanzadas.
![Page 8: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/8.jpg)
EL JS
F vs
. EL
JSP
Feature JSF 2.0 EL JSF 1.x EL (with JSP) JSP 2.0 EL
Format #{blah}(immediate output values could be accessed with ${blah})
#{blah} ${blah}
Where used Anywhere in pageEg: #{customer.firstName}
Only in attributesof JSF tags. Eg:<h:outputText value="#{customer.firstName}"/>
Anywhere in pageEg: ${customer.firstName}
Represents Output data, later location for submitted data. Eg:<h:inputText value="#{customer.firstName}"/>
Outputdata, later location for submitted data. Eg:<h:inputText value="#{customer.firstName}"/>
Output data. Eg ${customer.firstName}
Where it looks for beans
Request, session, application (etc.) scopes and managed bean defs.
Request, session, application (etc.) scopes and managed bean defs.
Request, session, application scopes.
Declaration type
None needed for simplest usage. xlmns declaration for h:,ui:, f: tags.
@taglib None needed
Enviroments JavaEE 6 servers or servlet 2.5servers with JSF 2.0 JARs.
Java EE 5 servers or servlet 2.4 servers with JSF 1.x JARs.
Servlet 2.4+servers
![Page 9: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/9.jpg)
Accediendo a propiedades simples
![Page 10: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/10.jpg)
Prop
ieda
des
De
Bean
Ad
min
istr
ados
Sim
ples
Formato#{varName.propertyName}<h:outputText value=«#{varName.propertyName}» … />
Para JSF 2.0, la primera forma es usualmente la más usada, a menos que necesites otro atributo de <h:outputText (p.e. «rendered»)
InterpretaciónPrimero, busca varName
Buscar «varName» en todos los alcances definidos, desde el más específico hasta el más general (request, session, application, en este orden). Luego busca en las bean administrados definidos e instancia si lo encuentra.
Invoca getPropertyName y muestra el resultadoEsto debe ser un método de acceso normal sin paso de parámetros. Si se tratara de un boolean, el nombre del método podría ser isPropertyName.
![Page 11: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/11.jpg)
Código Java «TestBean1.java»
![Page 12: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/12.jpg)
Código Facelets «bean-properties.xhtml»
![Page 13: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/13.jpg)
Resultado
![Page 14: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/14.jpg)
Accediendo a propiedades embebidas
![Page 15: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/15.jpg)
Prop
ieda
des
De
Bean
Ad
min
istr
ados
Em
bebi
das
Formato#{var.prop1.prop2.prop3}<h:outputText value=«#{var.prop1.prop2.prop3}» … />
InterpretaciónPrimero, busca var
Igual que en el caso anterior. Busca en los alcances existentes. Si lo encuentra, lo usa; si no lo encuentra busca en los beans administrados definidos e instancia.Invoca el método getProp1 del bean administrado.Invoca el método getProp2 del resultado getProp1.Invoca el método getProp3 del resultado getProp2.
Luego muestra este resultado.
![Page 16: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/16.jpg)
Código Java «Name.java»
![Page 17: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/17.jpg)
Código Java «Company.java»
![Page 18: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/18.jpg)
Código Java «Employee.java»
![Page 19: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/19.jpg)
Código Java «Employee1.java»
![Page 20: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/20.jpg)
Código Facelets «nested-properties.xhtml»
![Page 21: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/21.jpg)
Resultado
![Page 22: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/22.jpg)
Enviando propiedades
![Page 23: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/23.jpg)
Tres
uso
s de
l #{…
}Designar el valor a mostrar
#{employee.address} o <h:outputText value=«#{employee.address}» />Sin importar cuando se acceda, mostrará getAddress.
<h:inputText value=«#{employee.address}» />Cuando el formulario se muestra, invocará getAddress y pondrá el valor en el textfield mientras sea no-vacío.
Designar el valor a enviar<h:inputText value=«#{employee.address}» />
Cuando el formulario es enviado, designará donde se almacenará el valor. Pasa el valor del textfiel a setAddress.
Designar la llamada al método luego del envío del formulario
<h:commandButton value=«Submit» action=«#{employee.processEmployee}» />
Cuando el formulario es enviado, designa el manejador de la acción. Esto es el nombre exacto del método, no existe una abreviatura para ello.
![Page 24: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/24.jpg)
Gett
er v
s. S
etter
Ejemplo<h:inputText value=«#{myBean.a.b.c.d}» />
Cuando el formulario es mostradoBuscar o instanciar myBean. Invoca getA. Invoca getB sobre el resultado. Invoca getC sobre aquel resultado. Invoca getD sobre el último resultado. If el valor es no-vacío lo pone en el valor del textfield.
Cuando el formulario es enviadoBuscar myBean (instancia una nueva version si se está en RequestSession). Invoca getA. Invoca getB sobre el resultado. Invoca getC sobre aquel resultado. Luego pasa el valor del textfiel al método setD del último resultado.
Punto: solamente el último realiza el seteo en un submission.Se asume que el valor pasa la etapa de validación.
![Page 25: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/25.jpg)
Código Java «Employee.java»
![Page 26: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/26.jpg)
Código Facelets «submitting-properties.xhtml»
![Page 27: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/27.jpg)
Resultado
![Page 28: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/28.jpg)
Código Facelets «accepted.xhtml»
![Page 29: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/29.jpg)
Código Facelets «rejected.xhtml»
![Page 30: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/30.jpg)
Resultado
![Page 31: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/31.jpg)
Accediendo a colecciones
![Page 32: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/32.jpg)
Equi
vale
ncia
del
«pu
nto»
y la
s no
taci
ones
de
arre
glos
Formas equivalentes#{name.property}
Válido si «property» fuera un nombre de variable Java legal.#{name[«property»]}
Razones para usar la notación de corchetesPara acceder a arreglos, listas y otras colecciones.
Ver siguientes diapositivasPara calcular el nombre de la propiedad en tiempo de ejecución.
#{name1[name2]} (sin comillas sobre name2)Para usar nombres que son ilegales como nombres de variable Java.
#{foo[«bar-baz»]}#{foo[«bar.baz»]}
![Page 33: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/33.jpg)
#{att
ribut
eNam
e[en
tryN
ame]
}Funciona para…
Arreglo. Equivalente atheArray[index] (getting y setting)
Lista. Equivalente a theList.get(index) o theList.set(index, submittedVal)
Mapa. Equivalente atheMap.get(key) or theMap.put(key, submittedVal)
Formas equivalentes{stateCapitals[«maryland»]}{stateCapitals.maryland}No se puede usar esto para las listas (los números no son nombres de variable Java legales, entonces #{listVar.2} es ilegal). Y no todas las claves de la tabla hash son nombres de variable legales.
![Page 34: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/34.jpg)
Código Java «Purchases.java»
![Page 35: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/35.jpg)
Código Java «Purchases.java» (Cont.)
![Page 36: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/36.jpg)
Código Java «Utils.java»
![Page 37: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/37.jpg)
using-collections.xhtml
Este ejemplo usa indices explícitos.
![Page 38: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/38.jpg)
using-collections.xhtml
![Page 39: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/39.jpg)
using-collections.xhtml
Debido a que se usan comillas dobles alrededors de la clave del Mapa es que se debe usar comillas simples aquí.
![Page 40: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/40.jpg)
Resultado
![Page 41: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/41.jpg)
Resultado
![Page 42: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/42.jpg)
3 Resumen
![Page 43: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/43.jpg)
» Mostrando propiedades de beans administrados» #{customer.company.name}» <h:outputText value=“#{customer.company.name}” />
» Textfields» <h:inputText value=“#{customer.firstName}” />
» Cuando el fomulario es mostrado por primera vez, invoca getFirstName.» Cuando el formulario es enviado, pasa el valor a setFirstName.
» Colecciones» #{customer.addresses[0].zip}
» Invoca getAddresses, luego la dirección en la ubicación 0 e invoca el getZip.
PUNTOS PRINCIPALES
![Page 44: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/44.jpg)
GRACIAS
![Page 45: P1C5 Lenguaje de Expresiones](https://reader035.fdocumento.com/reader035/viewer/2022062514/558fd2bc1a28ab165e8b457b/html5/thumbnails/45.jpg)
O también puedes encontrarla
en .
Saludos!
AULA VIRTUALEncuentra esta presentación en el