P1C2 Navegación y Parámetros
-
Upload
aurelio-martin-obando-tavara -
Category
Education
-
view
3.079 -
download
2
description
Transcript of P1C2 Navegación y Parámetros
AGENDA - Nuevas características de JSF 2.0- Navegación estática- Navegación dinámica- Beans Administrados- Resumen
Clase 02
1
Nue
vas
cara
cter
ístic
as d
e JS
F 2.
0JSF 2.0 básico
Facelets son la nueva manera estándar de crear JSP’s.
Navegación entre páginas usando parámetros predeterminados y personalizados.
Los beans administrados con anotaciones reemplazan propiedades en el archivo faces-config.
Soporte ajax.
Más adelante…Validaciones
Plantillas de páginas
Nav
egac
ión
está
tica
La ideaHacer clic en un botón dentro de una página inicial.Obtener siempre la misma página de resultado al hacer
el clic.Sin contenido dinámico.
Lo necesarioPropiedades básicas web.xml
patrón-url y la propiedad PROJECT_STAGEfaces-config.xml
Etiquetas de apertura y cierre, pero sin cuerpoUna página inicial
archivo: test.xhtml; URL: test.jsfContiene <h:commandButton action=“successful-
test” />Una página de resultado
successful-test.xhtml, donde la parte principal del nombre del archivo corresponde al action mencionado arriba
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/*
faces-config.xml
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.
Sin embargo, es imprescindible que este archivo exista y contenga las etiquetas de apertura y cierre legales tal como se muestra en la imagen.
test.xhtml
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í.
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.
En conclusión, cuando se presione el botón, la página successful-test.xhtml (del mismo folder que test.xhtml) se visualizará.
Resultado
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.
Nav
egac
ión
diná
mic
a co
n pá
gina
s de
resu
ltado
La ideaHacer clic en un botón dentro de una página inicial.Obtener una de dos páginas de resultado, escogida
aleatoriamente.
Lo necesarioweb.xml y faces-config.xml tal como antesUna página inicial
archivo: health-plan-signup-1.xhtml y contiene<h:commandButton action=“#{healthPlanBean.signup}” />
Un bean administradoNombre: HealthPlanBeanAnotación @ManagedBean Contiene un método “signup” que retorna dos posibles Strings
Dos páginas de resultadosLos nombres corresponden a los valores de retorno
health-plan-signup-1.xhtml
La misma cabecera que en JSF 1.x. Pero en JSF 2.0, faceletes son la manera estándar de hacer JSP’s.
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.
Los elementos de entrada son ignorados en este ejemplo simplón. Más adelante se estudiará el atributo “value”.
El mismo formato que en JSF 1.X. Pero el nombre del bean administrado se deriva del nombre de la clase Java
HealthPlanBean.java
Declarar esta clase como Managed Bean evita una entrada en el archivo faces-config.
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.
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.
Estos valores corresponden a las páginas accepted.xhtml y rejected.xhtml.
Nav
egac
ión
diná
mic
a co
n m
apeo
ex
plíc
ito d
e pá
gina
s de
resu
ltado
La idea (la misma que antes)Hacer clic en un botón dentro de una página inicial.Obtener una de dos páginas de resultado, escogida
aleatoriamente.
Lo necesarioNuevo en este ejemplo
navigation-rule in faces-config.xml que mapea los outcomes (valores de retorno de algún método) a páginas de resultado
Lo mismo que en los ejemplos anterioresweb.xml, página inicial, bean administrado y páginas de resultado
faces-config.xml
Página inicial
Valores de retorno de los métodos Java que se ejecuta cuando el formulario de la página inicial es enviado.
Páginas de resultado que corresponden a los outcomes.
Estas reglas de navegación son exactamente iguales que en JSF 1.X.
HealthPlanBean.java
El mismo bean administrado que en el ejemplo anterior.
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.
Usa
ndo
Bean
s Ad
min
istr
ados
par
a m
anej
ar p
arám
etro
s de
Req
uest 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 necesarioNuevo en este ejemplo
Bean: propiedades correspondientes a los parámetros de request
Formulario de entrada: atributo de “valor” para h:inputText
Páginas de resultado: #{miBean.miPropiedad}Lo mismo que en los ejemplos anteriores
web.xml, faces-config.xml
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 Request Scope) y el valor ingresado en la caja de texto es pasado a setCutomerId.
BankingBean.java
Estos métodos serán llamados automáticamente por JSF cuando el formulario sea enviado.
El customer es inicialmente null. Dependiendo del dato ingresado, el bean administrado buscará un customer.
BankingBean.java (continuado)
Llenados por JSF antes que el método showBalancePage() 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 showBalancePage() a través de la lógica de negocio.
Existen 5 posibles resultados de página: wrong-password.xhtml, unknown-customer.xhtml, negative-balance.xhtml, normal-balance.xhtml, and high-balance.xhtml. Se está usando el mapeo por defecto de valores de retorno a nombres de archivos en todos los casos (en lugar de reglas de navegación explícitas en faces-config.xml).
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.xhtml son similares.
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}"/>.
unknown-password.xhtml es similar.
» 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» Para páginas de resultado, usar usualmente #{blah} en vez de <h:outputText
value=“#{blah}” />» Navegación de páginas por defecto
» 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)
» Nombre del bean administrado» Agregar @ManagedBean antes de la clase» Si el nombre de la clase es MiBeanAdministrado, usar #{miBeanAdministrado.blah}
RESUMEN
O también puedes encontrarla
en .
Saludos!
AULA VIRTUALEncuentra esta presentación en el