4. web.xml Debetener un patrón-url *.jsf (o cualquierpatrónqueustedelija). Asigne Development a PROJECT_STAGE. faces-config.xml Debetenerunacabecera XML legal y lasetiquetas de inicio y fin. No esnecesarioetiquetas en el cuerpo some-page.xml Invóquelausando some-page.jsf. Revisado de lasclasesanteriores
5. web.xml Debe ser una versión mayor a 2.5. Glassfish soporta servlets versión 3.0 Brinda mayor detalle en los mensajes de error. Esto es opcional y nuevo en JSF 2.0 Esto es lo mismo que en JSF 1.X Patrón que obedece el Contexto Faces. Otras opciones populares son *.faces o /faces/*
6. faces-config.xml Clic derecho en Web Pages y seleccione >> New >> Other En la categoría JavaServer Faces >> JSF Faces Configuration >> Next Escribir en nombre: “faces-config” >> Finish 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.
7. some-page.xhtml 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… No se necesitan entradas como @taglib…
8. anotación @ManagedBean @ManagedBean public class SomeBean { … } 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). Valores de retorno de los métodos de acción de controlador 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). Principiosbásicos de @ManagedBean
9. Idea Clic en una página inicial. Obtener una de tres páginas de resultado, escogidas aleatoriamente. Lo necesario Una página de inicio - <h:commandButtonaction=«#{simpleBean.doNavigation}» /> Un bean administrado - Class: SimpleBean - Anotación @ManagedBean - Un método doNavigation retorna 3 posibles Strings - «page1», «page2» o «page3» Tres páginas - Los nombres deben coincidir con los valores de retorno del método doNavigation (menos .xhtml) - page1.xhtml, page2.xhtml o page3.xhtml Ejemplo
10. start-page.xhtml 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. 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.
11. SimpleBean.java Esta anotación registra esta clase como bean administrado sin la necesidad de modificar el faces-config.xml. 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») Debido a que no se ha especificado un alcance, el alcance es Request. Para especificar otro alcance, @SessionScoped 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.
12. page1.xhtml Para el ejemplo, el contenido de esta página nos permitirá identificar que estamos en page1xhtml. Las páginas page2.xhtml y page3.xhtml son similares.
14. El atributo name de @ManagedBean @ManagedBean(name=“customName”) public class SomeClass { … } Para referirse al bean, use #{customName.blah}, donde el nombre del bean es el valor exacto del atributo name. Pordefecto, el alcance del bean es Request. Evitamosentradas en el faces-config.xml. Dandonombrespersonalizados a los beans administrados
15. Idea Clic en una página inicial. Obtener una de tres páginas de resultado, escogidas aleatoriamente. Lo necesario Una página de inicio - <h:commandButtonaction=«#{coolName.doNavigation}» /> Un bean administrado - Class: SimpleBean2 - Anotación @ManagedBean(name=«coolName») - Un método doNavigation retorna 3 posibles Strings - «page1», «page2» o «page3» Tres páginas - Los nombres deben coincidir con los valores de retorno del método doNavigation (menos .xhtml) - page1.xhtml, page2.xhtml o page3.xhtml Ejemplo
16. start-page2.xhtml 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.
17. SimpleBean2.java Usa el nombre «coolName» en vez de «simpleBean2». Hereda el método doNavigation que retorna «page1», «page2» y «page3». Este ejemplo comparte las páginas de resultados con el ejemplo anterior.
19. Los valores de entradacorresponden a propiedades del bean <h:inputText value=“#{someBean.someProp}” /> - Cuando el formularioesmostrado, llama al métodogetSomeProp(). Si el valor esdiferente de null o vacío, pone el valor en el textfield. - Cuando el formularioesenviado (submitted), toma el valor del textfield y lo pasa a setSomeProp(…). - La validación y/o tipos de conversiónocurrenprimero. Es el mismocomportamientoque en JSF 1.X. El alcance Request essiemprepordefecto El bean administradosesinstanciado dos veces: primerocuando el formularioesinicialmentemostrado y luegocuando el formularioesenviado. Es el mismocomportamientoque en JSF 1.X. #{bean.someProp} directamente en la salida (output) En vez de usar<h:outputText value=“#{bean.someProp}” /> Nuevo en la versión JSF 2.0 Usando beans paramanejarparámetros de Request
20. La idea Ingresar el código de un cliente de banco y su contraseña. Obtener ya sea. Una página que muestre el primer nombre, apellido y balance. Distintas versiones dependiendo del balance. Mensaje de error acerca del ingreso de datos. Lo necesario Bean Administrado: propiedades correspondientes a los parámetros de request Formulario de entrada: atributo de “valor” para h:inputText Páginas de resultado: #{miBean.miPropiedad} Ejemplo
21. bank-lookup.xhtml 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. 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.
22. BankingBeanBase.java Automáticamente, estos serán llamados cuando por JSF cuando el formulario sea enviado. ¿A que se debe que el método showBalance() sea abstracto? ¿Por qué no existe un método setCustomer(…)?
23. BankingBean.java Llenados por JSF antes que el método showBalance () sea invocado. 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. Existen 5 posiblesresultados de página: wrong-password.xhtml, unknown-customer.xhtml, negative-balance.xhtml, 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).
26. normal-balance.xhtml 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. negative-balance.xhtml y high-balance.xhtmlson similares.
27. unknown-customer.xhtml Aunque customerId venga del usuario y pueda contener caracteres HTML, es seguro usar #{bankingBean.customerId} en vez de <h:outputText value="#{bankingBean.customerId}"/>. wrong-password.xhtmlessimilar.
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