Aurelio Martín Obando Távara<br />aot@upnorte.edu.pe<br />proyectos iNAVEGACIÓN Y PARÁMETROS<br />
EnalteciendoLos Temas<br />1<br />3<br />2<br />NavegaciónEstática<br />Beans Administrados<br />NavegaciónDinámica<br />
AGENDA - Nuevas características de JSF 2.0- Navegación estática- Navegación dinámica- Beans Administrados- Resumen<br />Cl...
2<br />CONTENIDO<br />
JSF 2.0 básico<br />Facelets son la nueva manera estándar de crear JSP’s.<br />	Navegación entre páginas usando parámetros...
La idea<br />Hacer clic en un botón dentro de una página inicial.<br />	Obtener siempre la misma página de resultado al ha...
web.xml<br />Debe ser una versión mayor a 2.5. Glassfish soporta servlets versión 3.0<br />Brinda mayor detalle en los men...
faces-config.xml<br />Durante el ejemplo, este archivo casi siempre estará vacío.  Este ejemplo simple usa páginas de resu...
test.xhtml<br />El action usualmente es #{algunBean.algunMetodo}, donde algunMetodo devuelve un String que es el outcome. ...
Resultado<br />Nótese que la URL es test.jsf en los tres casos. Para la página inicial , se usa aparece la URL test.jsf de...
La idea<br />Hacer clic en un botón dentro de una página inicial.<br />	Obtener una de dos páginas de resultado, escogidaa...
health-plan-signup-1.xhtml<br />La misma cabecera que en JSF 1.x. Pero en JSF 2.0, faceletes son la  manera estándar de ha...
HealthPlanBean.java<br />Declarar esta clase como Managed Bean evita una entrada en el archivo faces-config.<br />Debido a...
Resultados de página<br />rejected.hxtml<br />accepted.hxtml<br />
Resultado<br />
La idea (la misma que antes)<br />Hacer clic en un botón dentro de una página inicial.<br />	Obtener una de dos páginas de...
faces-config.xml<br />Página inicial<br />Valores de retorno de los métodos Java que se ejecuta cuando el formulario de la...
health-plan-signup-2.xhtml<br />Esta página es idéntica a la página health-plan-signuo-1.xhtml.<br />
HealthPlanBean.java<br />El mismo bean administrado que en el ejemplo anterior.<br />La diferencia radica en que los valor...
Resultados de página<br />page-for-rejected.hxtml<br />page-for-accepted.hxtml<br />
Resultado<br />
La idea<br />Ingresar el código de un cliente de banco y su 	contraseña.<br />Obtener ya sea.<br />Una página que muestre ...
bank-lookup.xhtml<br />Este valor juega un doble rol.  Cuando el formulario es mostrado por primera vez, bankinBean es ins...
BankingBean.java<br />Estos métodos serán llamados automáticamente  por JSF cuando el formulario sea enviado.<br />El cust...
BankingBean.java (continuado)<br />Llenados por JSF antes que el método showBalancePage() sea invocado.<br />El customer n...
normal-balance.xhtml<br />Nótese que en JSF 2.0 se puede usar #{result} en vez de <h:outputText value="#{result}"/>. En am...
unknown-customer.xhtml<br />Aunque customerId venga del usuario y pueda contener caracteres HTML, es seguro usar #{banking...
Resultado<br />
Resultado<br />
3<br />Resumen<br />
RESUMEN<br /><ul><li>Facelets en todas las páginas
Usar xhtml con xmlns:h=“http://java.sun.com/jsf/html”
Siempre usar h:head, h:body y h:form
Upcoming SlideShare
Loading in …5
×

P1C2 Navegación y Parámetros

2,929 views
2,805 views

Published on

Esta presentación les mostrará como se puede navegar entre distintas páginas utilizando el framework Java Server Faces 2.0

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,929
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
63
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

P1C2 Navegación y Parámetros

  1. 1. Aurelio Martín Obando Távara<br />aot@upnorte.edu.pe<br />proyectos iNAVEGACIÓN Y PARÁMETROS<br />
  2. 2. EnalteciendoLos Temas<br />1<br />3<br />2<br />NavegaciónEstática<br />Beans Administrados<br />NavegaciónDinámica<br />
  3. 3. AGENDA - Nuevas características de JSF 2.0- Navegación estática- Navegación dinámica- Beans Administrados- Resumen<br />Clase 02<br />1<br />
  4. 4. 2<br />CONTENIDO<br />
  5. 5. JSF 2.0 básico<br />Facelets son la nueva manera estándar de crear JSP’s.<br /> Navegación entre páginas usando parámetros predeterminados y personalizados.<br /> Los beans administrados con anotaciones reemplazan propiedades en el archivo faces-config.<br /> Soporteajax.<br />Más adelante…<br /> Validaciones<br /> Plantillas de páginas<br />Nuevas características de JSF 2.0<br />
  6. 6. La idea<br />Hacer clic en un botón dentro de una página inicial.<br /> Obtener siempre la misma página de resultado al hacer el clic.<br /> Sincontenido dinámico.<br />Lo necesario<br /> Propiedades básicas web.xml<br />patrón-url y la propiedad PROJECT_STAGE<br />faces-config.xml<br /> Etiquetas de apertura y cierre, pero sin cuerpo<br /> Una página inicial<br />archivo: test.xhtml; URL: test.jsf<br /> Contiene <h:commandButton action=“successful-test” /><br /> Una página de resultado<br />successful-test.xhtml, donde la parte principal del nombre del archivo corresponde al action mencionado arriba<br />Navegación estática<br />
  7. 7. web.xml<br />Debe ser una versión mayor a 2.5. Glassfish soporta servlets versión 3.0<br />Brinda mayor detalle en los mensajes de error. Esto es opcional y nuevo en JSF 2.0 <br />Esto es lo mismo que en JSF 1.X<br />Patrón que obedece el Contexto Faces. Otras opciones populares son *.faces o /faces/*<br />
  8. 8. faces-config.xml<br />Durante el ejemplo, este archivo casi siempre estará vacío. Este ejemplo simple usa páginas de resultado por defecto (derivadas del valor del atributo “action” del botón) y nunca beans administrados.<br />Sin embargo, es imprescindible que este archivo exista y contenga las etiquetas de apertura y cierre legales tal como se muestra en la imagen.<br />
  9. 9. test.xhtml<br />El action usualmente es #{algunBean.algunMetodo}, donde algunMetodo devuelve un String que es el outcome. Pero también se puede poner un outcome literal aquí.<br />De un modo u otro, el outcome corresponde al nombre de la página de resultado a menos que se cree una regla de navegación en el faces-config.xml. <br />En conclusión, cuando se presione el botón, la página successful-test.xhtml(del mismo folder que test.xhtml) se visualizará.<br />
  10. 10. Resultado<br />Nótese que la URL es test.jsf en los tres casos. Para la página inicial , se usa aparece la URL test.jsf debido a que el nombre es test.xhtml y el patrón-url en el web.xml es *.jsf. Para las páginas de resultado, JSF (por defecto) usa forwarding, no redirecting, de este modo la URL no cambia cuando se envía el formulario. El mensaje de error en la página de fallos se debe a que usamos Development como PROJECT_STAGE en web.xml. De otro modo, la página inicial se hubiera mostrado sin mensajes.<br />
  11. 11. La idea<br />Hacer clic en un botón dentro de una página inicial.<br /> Obtener una de dos páginas de resultado, escogidaaleatoriamente.<br />Lo necesario<br />web.xml y faces-config.xml tal como antes<br /> Una página inicial<br />archivo: health-plan-signup-1.xhtml y contiene<br /><h:commandButton action=“#{healthPlanBean.signup}” /><br /> Un bean administrado<br />Nombre: HealthPlanBean<br />Anotación @ManagedBean<br /> Contiene un método “signup” que retorna dos posibles Strings<br /> Dos páginas de resultados<br /> Los nombres corresponden a los valores de retorno<br />Navegación dinámica con páginas de resultado<br />
  12. 12. health-plan-signup-1.xhtml<br />La misma cabecera que en JSF 1.x. Pero en JSF 2.0, faceletes son la manera estándar de hacer JSP’s.<br />No es necesario usar <h:body> o <h.head> en este ejemplo, sin embargo cuando se utilice <h:outputScript> y especialmente <f:ajax>, se requerirá estas etiquetas.<br />Los elementos de entrada son ignorados en este ejemplo simplón. Más adelante se estudiará el atributo “value”.<br />El mismo formato que en JSF 1.X. Pero el nombre del bean administrado se deriva del nombre de la clase Java<br />
  13. 13. HealthPlanBean.java<br />Declarar esta clase como Managed Bean evita una entrada en el archivo faces-config.<br />Debido a que no se le está pasando un nombre en el atributo “name”, el nombre del Managed Bean es el nombre de la clase Java con la primera letra en minúscula.<br />Debido a que no se le está indicando un alcance. El alcance por defecto es Request Scope. Tambié se podría usar una anotación como @SessionScoped.<br />Estos valores corresponden a las páginas accepted.xhtml y rejected.xhtml.<br />
  14. 14. Resultados de página<br />rejected.hxtml<br />accepted.hxtml<br />
  15. 15. Resultado<br />
  16. 16. La idea (la misma que antes)<br />Hacer clic en un botón dentro de una página inicial.<br /> Obtener una de dos páginas de resultado, escogidaaleatoriamente.<br />Lo necesario<br /> Nuevo en este ejemplo<br />navigation-rule in faces-config.xml que mapea los outcomes (valores de retorno de algún método) a páginas de resultado<br /> Lo mismo que en los ejemplos anteriores<br /> web.xml, página inicial, bean administrado y páginas de resultado<br />Navegación dinámica con mapeo explícito de páginas de resultado<br />
  17. 17. faces-config.xml<br />Página inicial<br />Valores de retorno de los métodos Java que se ejecuta cuando el formulario de la página inicial es enviado.<br />Páginas de resultado que corresponden a los outcomes.<br />Estas reglas de navegación son exactamente iguales que en JSF 1.X.<br />
  18. 18. health-plan-signup-2.xhtml<br />Esta página es idéntica a la página health-plan-signuo-1.xhtml.<br />
  19. 19. HealthPlanBean.java<br />El mismo bean administrado que en el ejemplo anterior.<br />La diferencia radica en que los valores de retorno del método signup() están mapeados a unas página de resultados explícitamente en el faces-config.xml.<br />
  20. 20. Resultados de página<br />page-for-rejected.hxtml<br />page-for-accepted.hxtml<br />
  21. 21. Resultado<br />
  22. 22. La idea<br />Ingresar el código de un cliente de banco y su contraseña.<br />Obtener ya sea.<br />Una página que muestre el primer nombre, apellido y balance.<br />Distintas versiones dependiendo del balance.<br />Mensaje de error acerca del ingreso de datos.<br />Lo necesario<br /> Nuevo en este ejemplo<br />Bean: propiedades correspondientes a los parámetros de request<br /> Formulario de entrada: atributo de “valor” para h:inputText<br /> Páginas de resultado: #{miBean.miPropiedad}<br /> Lo mismo que en los ejemplos anteriores<br />web.xml, faces-config.xml<br />Usando Beans Administrados para manejar parámetros de Request<br />
  23. 23. bank-lookup.xhtml<br />Este valor juega un doble rol. Cuando el formulario es mostrado por primera vez, bankinBean es instanciado y getCustomerIdes llamado. Si el valor es diferente de vacío, ese resultado es el valor inicial de la caja de texto. De otro modo, la caja de texto aparecerá vacía.<br />Cuando el formulario es enviado, bankingBean es instanciado nuevamente (asumiendo por defecto RequestScope) y el valor ingresado en la caja de texto es pasado a setCutomerId.<br />
  24. 24. BankingBean.java<br />Estos métodos serán llamados automáticamente por JSF cuando el formulario sea enviado.<br />El customeres inicialmente null. Dependiendo del dato ingresado, el bean administrado buscará un customer.<br />
  25. 25. BankingBean.java (continuado)<br />Llenados por JSF antes que el método showBalancePage() sea invocado.<br />El customer no es llenado automáticamente por JSFdebido a que no es parte directa de los datos enviados, pero obtenido indirectamente de los datos ingresados. De este modo, customer es llenado por el método showBalancePage() a través de la lógica de negocio.<br />Existen 5 posiblesresultados de página: wrong-password.xhtml, unknown-customer.xhtml, negative-balance.xhtml, <br />normal-balance.xhtml, and high-balance.xhtml. Se estáusando el mapeopordefecto de valores de retorno a nombres de archivos en todos los casos (en lugar de reglas de navegaciónexplícitas en faces-config.xml).<br />
  26. 26. normal-balance.xhtml<br />Nótese que en JSF 2.0 se puede usar #{result} en vez de <h:outputText value="#{result}"/>. En ambos casos se obvia los caracteres HTML, entonces úsese la forma más corta mostrada aquí a menos que se necesite una de las siguientes opciones:h:outputText con el atributo“escape”igual a false, con el atributo“rendered” con un valor calculado, id, converter, etc.<br />negative-balance.xhtmly high-balance.xhtmlson similares.<br />
  27. 27. unknown-customer.xhtml<br />Aunque customerId venga del usuario y pueda contener caracteres HTML, es seguro usar #{bankingBean.customerId} en vez de <h:outputText value="#{bankingBean.customerId}"/>.<br />unknown-password.xhtmlessimilar.<br />
  28. 28. Resultado<br />
  29. 29. Resultado<br />
  30. 30. 3<br />Resumen<br />
  31. 31. RESUMEN<br /><ul><li>Facelets en todas las páginas
  32. 32. Usar xhtml con xmlns:h=“http://java.sun.com/jsf/html”
  33. 33. Siempre usar h:head, h:body y h:form
  34. 34. Para páginas de resultado, usar usualmente #{blah} en vez de <h:outputText value=“#{blah}” />
  35. 35. Navegación de páginas por defecto
  36. 36. El valor de retorno de los métodos del bean administrado es el nombre de las páginas de resultado. (menos la extensión .xhtml)
  37. 37. Nombre del bean administrado
  38. 38. Agregar @ManagedBean antes de la clase
  39. 39. Si el nombre de la clase es MiBeanAdministrado, usar #{miBeanAdministrado.blah}</li></li></ul><li>GRACIAS<br />
  40. 40. Encuentra esta presentación en el<br />AULA VIRTUAL<br /> O tambiénpuedesencontrarla<br />en . <br />Saludos!<br />

×