P1C5 Lenguaje de Expresiones
Upcoming SlideShare
Loading in...5
×
 

P1C5 Lenguaje de Expresiones

on

  • 2,305 views

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

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

Statistics

Views

Total Views
2,305
Views on SlideShare
2,303
Embed Views
2

Actions

Likes
0
Downloads
45
Comments
0

1 Embed 2

http://www.slashdocs.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

P1C5 Lenguaje de Expresiones P1C5 Lenguaje de Expresiones Presentation Transcript

  • Aurelio Martín Obando Távara
    aot@upnorte.edu.pe
    proyectos iLENGUAJE DE EXPRESIONES
  • AGENDA- Accediendo a propiedades simples- Accediendo a propiedades embebidas- Enviando propiedades- Accediendo a colecciones- Resumen
    Clase 05
    1
  • 2
    CONTENIDO
  • En facelets no soporta script JSP
    De este modo, necesitamos una manera
    Ejemplos
    #{employee.firstName}
    Invoca el método getFirstName() del bean administrado «employee» y lo muestra.
    <h:inputTextvalue=«#{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.
    PuntosPrincipales
  • 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ón
    Para referenciar un elemento de un arreglo, List o Map, se usaría #{someBean.array[indexOrKey]}
    Ventajas del Lenguaje de Expresiones (Muy Importante)
  • 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 muestra
    Existen dos opciones para mostrar uno de muchos resultados
    #{test ? option1 : option2}
    <h:outputText … rendered=«#{test}» />
    Ventajas del Lenguaje de Expresiones (Importante)
  • 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 argumentos
    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.
    «Mensajes vacíos» en vez de mensajes de error
    En la mayoría de los casos, valores nulos o NullPointerExceptions terminan como «mensajes vacíos» y no excepciones lanzadas.
    Ventajas del Lenguaje de Expresiones (No Tan Importante)
  • EL JSF vs. EL JSP
  • Accediendo a propiedades simples
  • 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ón
    Primero, 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 resultado
    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.
    Propiedades De Bean Administrados Simples
  • Código Java «TestBean1.java»
  • Código Facelets «bean-properties.xhtml»
  • Resultado
  • Accediendo a propiedades embebidas
  • Formato
    #{var.prop1.prop2.prop3}
    <h:outputText value=«#{var.prop1.prop2.prop3}» … />
    Interpretación
    Primero, 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.
    Propiedades De Bean Administrados Embebidas
  • Código Java «Name.java»
  • Código Java «Company.java»
  • Código Java «Employee.java»
  • Código Java «Employee1.java»
  • Código Facelets «nested-properties.xhtml»
  • Resultado
  • Enviando propiedades
  • Designar el valor a mostrar
    #{employee.address} o <h:outputText value=«#{employee.address}» />
    Sin importar cuando se acceda, mostrará getAddress.
    <h:inputTextvalue=«#{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:inputTextvalue=«#{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:commandButtonvalue=«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.
    Tres usos del #{…}
  • Ejemplo
    <h:inputTextvalue=«#{myBean.a.b.c.d}» />
    Cuando el formulario es mostrado
    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.
    Cuando el formulario es enviado
    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.
    Punto: solamente el último realiza el seteo en un submission.
    Se asume que el valor pasa la etapa de validación.
    Getter vs. Setter
  • Código Java «Employee.java»
  • Código Facelets «submitting-properties.xhtml»
  • Resultado
  • Código Facelets«accepted.xhtml»
  • Código Facelets«rejected.xhtml»
  • Resultado
  • Accediendo a colecciones
  • Formas equivalentes
    #{name.property}
    Válido si «property» fuera un nombre de variable Java legal.
    #{name[«property»]}
    Razones para usar la notación de corchetes
    Para acceder a arreglos, listas y otras colecciones.
    Ver siguientes diapositivas
    Para 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»]}
    Equivalencia del «punto» y las notaciones de arreglos
  • Funciona para…
    Arreglo. Equivalente a
    theArray[index] (getting y setting)
    Lista. Equivalente a
    theList.get(index) o theList.set(index, submittedVal)
    Mapa. Equivalente a
    theMap.get(key) ortheMap.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.
    #{attributeName[entryName]}
  • Código Java «Purchases.java»
  • Código Java «Purchases.java» (Cont.)
  • Código Java «Utils.java»
  • using-collections.xhtml
    Este ejemplousa indices explícitos.
  • using-collections.xhtml
  • using-collections.xhtml
    Debido a que se usancomillasdoblesalrededors de la clave del Mapaesque se debeusarcomillas simples aquí.
  • Resultado
  • Resultado
  • 3
    Resumen
  • PUNTOS PRINCIPALES
    • Mostrandopropiedades de beans administrados
    • #{customer.company.name}
    • <h:outputText value=“#{customer.company.name}” />
    • Textfields
    • <h:inputText value=“#{customer.firstName}” />
    • Cuando el fomularioesmostradoporprimeravez, invocagetFirstName.
    • Cuando el formularioesenviado, pasa el valor a setFirstName.
    • Colecciones
    • #{customer.addresses[0].zip}
    • InvocagetAddresses, luego la dirección en la ubicación 0 e invoca el getZip.
  • GRACIAS
  • Encuentra esta presentación en el
    AULA VIRTUAL
    O tambiénpuedesencontrarla
    en .
    Saludos!