Aurelio Martín Obando Távara<br />aot@upnorte.edu.pe<br />proyectos iANOTACIONES<br />
AGENDA- @ManagedBean- Nombres personalizados- Manejo de parámetros- Controlando el alcance- Resumen<br />Clase 03<br />1<b...
2<br />CONTENIDO<br />
web.xml<br />Debetener un patrón-url *.jsf (o cualquierpatrónqueustedelija).<br />Asigne Development a PROJECT_STAGE.<br /...
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 />Clic derecho en Web Pages y seleccione >> New >> Other<br />En la categoría JavaServer Faces >> JSF ...
some-page.xhtml<br />Tal como se discutió en las clases anteriores, de ahora en adelante se usará facelets con sintaxis xh...
anotación @ManagedBean<br />@ManagedBean<br />public class SomeBean { … }<br />	Para referirse al bean, use #{someBean.bla...
Idea<br />Clic en una página inicial.<br />Obtener una de tres páginas de resultado, escogidas aleatoriamente.<br />Lo nec...
start-page.xhtml<br />Esto significa que cuando Ud. presione el botón, JSF creará una instancia del bean administrado cuyo...
SimpleBean.java<br />Esta anotación registra esta clase como bean administrado sin la necesidad de modificar el faces-conf...
page1.xhtml<br />Para el ejemplo, el contenido de esta página nos permitirá identificar que estamos en page1xhtml.<br />La...
Resultado<br />
El atributo name de @ManagedBean<br />@ManagedBean(name=“customName”)<br />public class SomeClass { … }<br />Para referirs...
Idea<br />Clic en una página inicial.<br />Obtener una de tres páginas de resultado, escogidas aleatoriamente.<br />Lo nec...
start-page2.xhtml<br />Similar a la página start-page.xhtml, pero agregamos algo que nos permita saber nos encontramos en ...
SimpleBean2.java<br />Usa el nombre «coolName» en vez de «simpleBean2».<br />Hereda el método doNavigation que retorna «pa...
Resultado<br />
Los valores de entradacorresponden a propiedades del bean<br /><h:inputText value=“#{someBean.someProp}” /><br />- Cuando ...
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...
BankingBeanBase.java<br />Automáticamente, estos serán llamados cuando por JSF cuando el formulario sea enviado.<br />¿A q...
BankingBean.java<br />Llenados por JSF antes que el método showBalance () sea invocado.<br />El customer no es llenado aut...
CustomerSimpleMap.java<br />Provee cierta lógica ya programada prueba de errores.<br />
CustomerLookupService.java<br />¿Por qué complicarse declarando los métodos de búsqueda en una interfaz?<br />
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 />
Idea<br />Designaporcuandotiempo los beans administradospermancerán 	“vivos”.<br />Alcances de los Bean Administrados<br />
Anotacionesparaespecificar el alcance del bean administrado<br />
Anotacionesparaespecificar el alcance del bean administrado<br />
3<br />Resumen<br />
PUNTOS PRINCIPALES<br /><ul><li>Se puedeutilizaranotacionesparadefinir el alcance
Request Scope
Session Scope
Upcoming SlideShare
Loading in …5
×

P1C3 Anotaciones

1,299
-1

Published on

Esta presentación os ayudará a controlar el alcance de los beans administrados y a manejar parámetros de entrada por parte del usuario.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,299
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
50
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Bookmark: Literalmente, marcalibros. Se refiere a direcciones de páginas que el usuario visita, y que en lugar de tener que recordarlas, las almacena en un directorio especial, que el navegador se encarga de gestionar
  • Bookmark: Literalmente, marcalibros. Se refiere a direcciones de páginas que el usuario visita, y que en lugar de tener que recordarlas, las almacena en un directorio especial, que el navegador se encarga de gestionar
  • Bookmark: Literalmente, marcalibros. Se refiere a direcciones de páginas que el usuario visita, y que en lugar de tener que recordarlas, las almacena en un directorio especial, que el navegador se encarga de gestionar
  • Bookmark: Literalmente, marcalibros. Se refiere a direcciones de páginas que el usuario visita, y que en lugar de tener que recordarlas, las almacena en un directorio especial, que el navegador se encarga de gestionar
  • P1C3 Anotaciones

    1. 1. Aurelio Martín Obando Távara<br />aot@upnorte.edu.pe<br />proyectos iANOTACIONES<br />
    2. 2. AGENDA- @ManagedBean- Nombres personalizados- Manejo de parámetros- Controlando el alcance- Resumen<br />Clase 03<br />1<br />
    3. 3. 2<br />CONTENIDO<br />
    4. 4. web.xml<br />Debetener un patrón-url *.jsf (o cualquierpatrónqueustedelija).<br />Asigne Development a PROJECT_STAGE.<br />faces-config.xml<br />Debetenerunacabecera XML legal y lasetiquetas de inicio y fin.<br /> No esnecesarioetiquetas en el cuerpo<br />some-page.xml<br />Invóquelausando some-page.jsf.<br />Revisado de lasclasesanteriores<br />
    5. 5. 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 />
    6. 6. faces-config.xml<br />Clic derecho en Web Pages y seleccione >> New >> Other<br />En la categoría JavaServer Faces >> JSF Faces Configuration >> Next<br />Escribir en nombre: “faces-config” >> Finish<br />Durante el ejemplo, este archivo casi siempre estará vació. Todos los beans administrados usan los nombres por defecto y mapeo a páginas de resultado por defecto.<br />
    7. 7. some-page.xhtml<br />Tal como se discutió en las clases anteriores, de ahora en adelante se usará facelets con sintaxis xhtml para todas las páginas basadas en JSF 2.0; de este modo no se utilizará sintaxis jsp. Siempre se usará xmlns:h…, h:head, h:body y h:form. Mas adelante usaremos ocasionalmente xmlns:f… y/o xmlns:ui…<br />No se necesitan entradas como @taglib…<br />
    8. 8. anotación @ManagedBean<br />@ManagedBean<br />public class SomeBean { … }<br /> Para referirse al bean, use #{someBean.blah}, donde el nombre del bean es el nombre de la clase (sin los paquetes) con la primeraletra en minúscula. Pordefecto, el alcance del bean es Request. Y “blah” esexactamente el nombre de un método (dentro del atributo“action” de h:commandButton) o un shortcutparaun método de acceso get y set (dentro del atributo“value” de h:inputText).<br />Valores de retorno de los métodos de acción de controlador<br />Si el métodoretorna“foo” o “bar” y no hay mapeoexplícito en el faces-config.xml, entonceslaspáginas de resultado son foo.xhtml y bar.xhtml (dentro del mismo folder).<br />Principiosbásicos de @ManagedBean<br />
    9. 9. Idea<br />Clic en una página inicial.<br />Obtener una de tres páginas de resultado, escogidas aleatoriamente.<br />Lo necesario<br />Una página de inicio<br /> - <h:commandButtonaction=«#{simpleBean.doNavigation}» /><br />Un bean administrado<br /> - Class: SimpleBean<br />- Anotación @ManagedBean<br /> - Un método doNavigation retorna 3 posibles Strings<br /> - «page1», «page2» o «page3»<br />Tres páginas<br /> - Los nombres deben coincidir con los valores de retorno del método doNavigation (menos .xhtml)<br /> - page1.xhtml, page2.xhtml o page3.xhtml<br />Ejemplo<br />
    10. 10. start-page.xhtml<br />Esto significa que cuando Ud. presione el botón, JSF creará una instancia del bean administrado cuyo nombre sea simpleBeany luego se ejecutará el método doNavigation. <br />En JSF 1.X es el mismo formato; sin embargo en la nueva versión el nombre del bean administrado es derivado del nombre de la clase.<br />
    11. 11. SimpleBean.java<br />Esta anotación registra esta clase como bean administrado sin la necesidad de modificar el faces-config.xml.<br />Debido a que no se especifica un nombre personalizado, el nombre es el nombre de la clase con la primera letra en minúscula (p.e. simpleBean). Para especificar un nombre, @ManagedBean(name=«someName»)<br />Debido a que no se ha especificado un alcance, el alcance es Request. Para especificar otro alcance, @SessionScoped<br />Debido a que no se han definido reglas explícitas de mapeo en el faces-config.xml, estos valores de retorno corresponden a las páginas de resultado: page1.xhtml, page2.xhtml y page3.xhtml.<br />
    12. 12. page1.xhtml<br />Para el ejemplo, el contenido de esta página nos permitirá identificar que estamos en page1xhtml.<br />Las páginas page2.xhtml y page3.xhtml son similares.<br />
    13. 13. Resultado<br />
    14. 14. El atributo name de @ManagedBean<br />@ManagedBean(name=“customName”)<br />public class SomeClass { … }<br />Para referirse al bean, use #{customName.blah}, donde el nombre del bean es el valor exacto del atributo name.<br />Pordefecto, el alcance del bean es Request.<br />Evitamosentradas en el faces-config.xml.<br />Dandonombrespersonalizados a los beans administrados<br />
    15. 15. Idea<br />Clic en una página inicial.<br />Obtener una de tres páginas de resultado, escogidas aleatoriamente.<br />Lo necesario<br />Una página de inicio<br /> - <h:commandButtonaction=«#{coolName.doNavigation}» /><br />Un bean administrado<br /> - Class: SimpleBean2<br />- Anotación @ManagedBean(name=«coolName»)<br /> - Un método doNavigation retorna 3 posibles Strings<br /> - «page1», «page2» o «page3»<br />Tres páginas<br /> - Los nombres deben coincidir con los valores de retorno del método doNavigation (menos .xhtml)<br /> - page1.xhtml, page2.xhtml o page3.xhtml<br />Ejemplo<br />
    16. 16. start-page2.xhtml<br />Similar a la página start-page.xhtml, pero agregamos algo que nos permita saber nos encontramos en una segunda versión de la página start-page.xhtml.<br />
    17. 17. SimpleBean2.java<br />Usa el nombre «coolName» en vez de «simpleBean2».<br />Hereda el método doNavigation que retorna «page1», «page2» y «page3». Este ejemplo comparte las páginas de resultados con el ejemplo anterior.<br />
    18. 18. Resultado<br />
    19. 19. Los valores de entradacorresponden a propiedades del bean<br /><h:inputText value=“#{someBean.someProp}” /><br />- Cuando el formularioesmostrado, llama al métodogetSomeProp(). Si el valor esdiferente de null o vacío, pone el valor en el textfield.<br />- Cuando el formularioesenviado (submitted), toma el valor del textfield y lo pasa a setSomeProp(…).<br />- La validación y/o tipos de conversiónocurrenprimero.<br />Es el mismocomportamientoque en JSF 1.X.<br />El alcance Request essiemprepordefecto<br />El bean administradosesinstanciado dos veces: primerocuando el formularioesinicialmentemostrado y luegocuando el formularioesenviado.<br />Es el mismocomportamientoque en JSF 1.X.<br />#{bean.someProp} directamente en la salida (output)<br />En vez de usar<h:outputText value=“#{bean.someProp}” /><br />Nuevo en la versión JSF 2.0<br />Usando beans paramanejarparámetros de Request<br />
    20. 20. 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 />Bean Administrado:<br /> propiedades correspondientes a los parámetros de request<br />Formulario de entrada: <br /> atributo de “valor” para h:inputText<br />Páginas de resultado: <br />#{miBean.miPropiedad}<br />Ejemplo<br />
    21. 21. bank-lookup.xhtml<br />Este valor juega un doble rol. Cuando el formulario es mostrado por primera vez, bankinBean es instanciado y getCustomerId es 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 />
    22. 22. BankingBeanBase.java<br />Automáticamente, estos serán llamados cuando por JSF cuando el formulario sea enviado.<br />¿A que se debe que el método showBalance() sea abstracto?<br />¿Por qué no existe un método setCustomer(…)?<br />
    23. 23. BankingBean.java<br />Llenados por JSF antes que el método showBalance () sea invocado.<br />El customer no es llenado automáticamente por JSF debido 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 showBalance ()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 />
    24. 24. CustomerSimpleMap.java<br />Provee cierta lógica ya programada prueba de errores.<br />
    25. 25. CustomerLookupService.java<br />¿Por qué complicarse declarando los métodos de búsqueda en una interfaz?<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.xhtml y 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 />wrong-password.xhtmlessimilar.<br />
    28. 28. Resultado<br />
    29. 29. Resultado<br />
    30. 30. Idea<br />Designaporcuandotiempo los beans administradospermancerán “vivos”.<br />Alcances de los Bean Administrados<br />
    31. 31. Anotacionesparaespecificar el alcance del bean administrado<br />
    32. 32. Anotacionesparaespecificar el alcance del bean administrado<br />
    33. 33. 3<br />Resumen<br />
    34. 34. PUNTOS PRINCIPALES<br /><ul><li>Se puedeutilizaranotacionesparadefinir el alcance
    35. 35. Request Scope
    36. 36. Session Scope
    37. 37. Application Scope
    38. 38. View Scope
    39. 39. Custom Scope
    40. 40. None Scope
    41. 41. Tradicionalmenteubicadodespués de @ManagedBean</li></ul> @ManagedBean<br />@SessionScoped<br />public class somBean {…}<br />
    42. 42. GRACIAS<br />
    43. 43. Encuentra esta presentación en el<br />AULA VIRTUAL<br /> O tambiénpuedesencontrarla<br />en . <br />Saludos!<br />
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×