Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Aurelio Martín Obando Távara<br />aot@upnorte.edu.pe<br />proyectos iLENGUAJE DE EXPRESIONES<br />
AGENDA- Accediendo a propiedades simples- Accediendo a propiedades embebidas- Enviando propiedades- Accediendo a coleccion...
2<br />CONTENIDO<br />
En facelets no soporta script JSP<br />De este modo, necesitamos una manera<br />Ejemplos<br />#{employee.firstName}<br />...
Notación corta para las propiedades del bean administrado<br />Para referenciar el resultado del método getCompanyName() d...
Un set de operadores simples muy útil<br />Para manipular objetos dentro del Lenguaje de Expresiones, se puede usar cualqu...
Variables predefinidas (objetos implícitos)<br />Para acceder a parámetros de request, cookies, HTTP headers y otros tipos...
EL JSF vs. EL JSP<br />
Accediendo a propiedades simples<br />
Formato<br />#{varName.propertyName}<br /><h:outputText value=«#{varName.propertyName}» … /><br />Para JSF 2.0, la primera...
Código Java «TestBean1.java»<br />
Código Facelets «bean-properties.xhtml»<br />
Resultado<br />
Accediendo a propiedades embebidas<br />
Formato<br />#{var.prop1.prop2.prop3}<br /><h:outputText value=«#{var.prop1.prop2.prop3}» … /><br />Interpretación<br />Pr...
Código Java «Name.java»<br />
Código Java «Company.java»<br />
Código Java «Employee.java»<br />
Código Java «Employee1.java»<br />
Código Facelets «nested-properties.xhtml»<br />
Resultado<br />
Enviando propiedades<br />
Designar el valor a mostrar<br />#{employee.address} o <h:outputText value=«#{employee.address}» /><br />Sin importar cuan...
Ejemplo<br /><h:inputTextvalue=«#{myBean.a.b.c.d}» /><br />Cuando el formulario es mostrado<br />Buscar o instanciar myBea...
Código Java «Employee.java»<br />
Código Facelets «submitting-properties.xhtml»<br />
Resultado<br />
Código Facelets«accepted.xhtml»<br />
Código Facelets«rejected.xhtml»<br />
Resultado<br />
Accediendo a colecciones<br />
Formas equivalentes<br />#{name.property}<br />Válido si «property» fuera un nombre de variable Java legal.<br />#{name[«p...
Funciona para…<br />Arreglo. Equivalente a<br />theArray[index] (getting y setting)<br />Lista.  Equivalente a <br />theLi...
Código Java «Purchases.java»<br />
Código Java «Purchases.java» (Cont.)<br />
Código Java «Utils.java»<br />
using-collections.xhtml<br />Este ejemplousa indices explícitos.<br />
using-collections.xhtml<br />
using-collections.xhtml<br />Debido a que se usancomillasdoblesalrededors de la clave del Mapaesque se debeusarcomillas si...
Resultado<br />
Resultado<br />
3<br />Resumen<br />
PUNTOS PRINCIPALES<br /><ul><li>Mostrandopropiedades de beans administrados
#{customer.company.name}
<h:outputText value=“#{customer.company.name}” />
Upcoming SlideShare
Loading in …5
×

P1C5 Lenguaje de Expresiones

2,512 views

Published on

Esta presentación les ayudará a entender como JSF 2.0 interpreta el len

Published in: Education
  • Be the first to comment

  • Be the first to like this

P1C5 Lenguaje de Expresiones

  1. 1. Aurelio Martín Obando Távara<br />aot@upnorte.edu.pe<br />proyectos iLENGUAJE DE EXPRESIONES<br />
  2. 2. AGENDA- Accediendo a propiedades simples- Accediendo a propiedades embebidas- Enviando propiedades- Accediendo a colecciones- Resumen<br />Clase 05<br />1<br />
  3. 3. 2<br />CONTENIDO<br />
  4. 4. En facelets no soporta script JSP<br />De este modo, necesitamos una manera<br />Ejemplos<br />#{employee.firstName}<br />Invoca el método getFirstName() del bean administrado «employee» y lo muestra.<br /><h:inputTextvalue=«#{employee.firstName}» /><br />Cuando el formulario es mostrado, se invoca getFirstName()<br />Cuando el formulario es enviado, valida si el valor es OK, pasa el valor a setFirstName(…)<br />#{employee.addresses[0].zip}<br />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.<br />PuntosPrincipales<br />
  5. 5. Notación corta para las propiedades del bean administrado<br />Para referenciar el resultado del método getCompanyName() del bean administrado «company», se usaría #{company.companyName}<br />Para referenciar la propiedad firstName de la propiedad president del bean administrado «company», usaría #{company.president.firstName}<br />Acceso simple a los elementos de una colección<br />Para referenciar un elemento de un arreglo, List o Map, se usaría #{someBean.array[indexOrKey]}<br />Ventajas del Lenguaje de Expresiones (Muy Importante)<br />
  6. 6. Un set de operadores simples muy útil<br />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<br />Condicional de muestra<br />Existen dos opciones para mostrar uno de muchos resultados <br />#{test ? option1 : option2}<br /><h:outputText … rendered=«#{test}» /><br />Ventajas del Lenguaje de Expresiones (Importante)<br />
  7. 7. Variables predefinidas (objetos implícitos)<br />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.<br />Paso de argumentos<br />La versión 2.1 de EL permite el paso arbitrario de argumentos a los métodos. Funciona únicamente en los servidores Java EE 6.<br />«Mensajes vacíos» en vez de mensajes de error<br />En la mayoría de los casos, valores nulos o NullPointerExceptions terminan como «mensajes vacíos» y no excepciones lanzadas.<br />Ventajas del Lenguaje de Expresiones (No Tan Importante)<br />
  8. 8. EL JSF vs. EL JSP<br />
  9. 9. Accediendo a propiedades simples<br />
  10. 10. Formato<br />#{varName.propertyName}<br /><h:outputText value=«#{varName.propertyName}» … /><br />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»)<br />Interpretación<br />Primero, busca varName<br />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.<br />Invoca getPropertyName y muestra el resultado<br />Esto 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.<br />Propiedades De Bean Administrados Simples<br />
  11. 11. Código Java «TestBean1.java»<br />
  12. 12. Código Facelets «bean-properties.xhtml»<br />
  13. 13. Resultado<br />
  14. 14. Accediendo a propiedades embebidas<br />
  15. 15. Formato<br />#{var.prop1.prop2.prop3}<br /><h:outputText value=«#{var.prop1.prop2.prop3}» … /><br />Interpretación<br />Primero, busca var<br />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.<br />Invoca el método getProp1 del bean administrado.<br />Invoca el método getProp2 del resultado getProp1.<br />Invoca el método getProp3 del resultado getProp2.<br />Luego muestra este resultado.<br />Propiedades De Bean Administrados Embebidas<br />
  16. 16. Código Java «Name.java»<br />
  17. 17. Código Java «Company.java»<br />
  18. 18. Código Java «Employee.java»<br />
  19. 19. Código Java «Employee1.java»<br />
  20. 20. Código Facelets «nested-properties.xhtml»<br />
  21. 21. Resultado<br />
  22. 22. Enviando propiedades<br />
  23. 23. Designar el valor a mostrar<br />#{employee.address} o <h:outputText value=«#{employee.address}» /><br />Sin importar cuando se acceda, mostrará getAddress.<br /><h:inputTextvalue=«#{employee.address}» /><br />Cuando el formulario se muestra, invocará getAddress y pondrá el valor en el textfield mientras sea no-vacío.<br />Designar el valor a enviar<br /><h:inputTextvalue=«#{employee.address}» /><br />Cuando el formulario es enviado, designará donde se almacenará el valor. Pasa el valor del textfiel a setAddress.<br />Designar la llamada al método luego del envío del formulario<br /><h:commandButtonvalue=«Submit» action=«#{employee.processEmployee}» /><br />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.<br />Tres usos del #{…}<br />
  24. 24. Ejemplo<br /><h:inputTextvalue=«#{myBean.a.b.c.d}» /><br />Cuando el formulario es mostrado<br />Buscar 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.<br />Cuando el formulario es enviado<br />Buscar 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.<br />Punto: solamente el último realiza el seteo en un submission.<br />Se asume que el valor pasa la etapa de validación.<br />Getter vs. Setter<br />
  25. 25. Código Java «Employee.java»<br />
  26. 26. Código Facelets «submitting-properties.xhtml»<br />
  27. 27. Resultado<br />
  28. 28. Código Facelets«accepted.xhtml»<br />
  29. 29. Código Facelets«rejected.xhtml»<br />
  30. 30. Resultado<br />
  31. 31. Accediendo a colecciones<br />
  32. 32. Formas equivalentes<br />#{name.property}<br />Válido si «property» fuera un nombre de variable Java legal.<br />#{name[«property»]}<br />Razones para usar la notación de corchetes<br />Para acceder a arreglos, listas y otras colecciones.<br />Ver siguientes diapositivas<br />Para calcular el nombre de la propiedad en tiempo de ejecución.<br />#{name1[name2]} (sin comillas sobre name2)<br />Para usar nombres que son ilegales como nombres de variable Java.<br />#{foo[«bar-baz»]}<br />#{foo[«bar.baz»]}<br />Equivalencia del «punto» y las notaciones de arreglos<br />
  33. 33. Funciona para…<br />Arreglo. Equivalente a<br />theArray[index] (getting y setting)<br />Lista. Equivalente a <br />theList.get(index) o theList.set(index, submittedVal)<br />Mapa. Equivalente a<br />theMap.get(key) ortheMap.put(key, submittedVal)<br />Formas equivalentes<br />{stateCapitals[«maryland»]}<br />{stateCapitals.maryland}<br />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. <br />#{attributeName[entryName]}<br />
  34. 34. Código Java «Purchases.java»<br />
  35. 35. Código Java «Purchases.java» (Cont.)<br />
  36. 36. Código Java «Utils.java»<br />
  37. 37. using-collections.xhtml<br />Este ejemplousa indices explícitos.<br />
  38. 38. using-collections.xhtml<br />
  39. 39. using-collections.xhtml<br />Debido a que se usancomillasdoblesalrededors de la clave del Mapaesque se debeusarcomillas simples aquí.<br />
  40. 40. Resultado<br />
  41. 41. Resultado<br />
  42. 42. 3<br />Resumen<br />
  43. 43. PUNTOS PRINCIPALES<br /><ul><li>Mostrandopropiedades de beans administrados
  44. 44. #{customer.company.name}
  45. 45. <h:outputText value=“#{customer.company.name}” />
  46. 46. Textfields
  47. 47. <h:inputText value=“#{customer.firstName}” />
  48. 48. Cuando el fomularioesmostradoporprimeravez, invocagetFirstName.
  49. 49. Cuando el formularioesenviado, pasa el valor a setFirstName.
  50. 50. Colecciones
  51. 51. #{customer.addresses[0].zip}
  52. 52. InvocagetAddresses, luego la dirección en la ubicación 0 e invoca el getZip.</li></li></ul><li>GRACIAS<br />
  53. 53. Encuentra esta presentación en el<br />AULA VIRTUAL<br /> O tambiénpuedesencontrarla<br />en . <br />Saludos!<br />

×