P1C2 Navegación y Parámetros

33
Aurelio Martín Obando Távara [email protected] proyectos i NAVEGACIÓN Y PARÁMETROS

description

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

Transcript of P1C2 Navegación y Parámetros

Aurelio Martín Obando Tá[email protected]

proyectos i

NAVEGACIÓN Y PARÁMETROS

Enalteciendo Los Temas

1 Navegación Estática

2Navegación

Dinámica

3Beans

Administrados

AGENDA - Nuevas características de JSF 2.0- Navegación estática- Navegación dinámica- Beans Administrados- Resumen

Clase 02

1

2 CONTENIDO

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.

Resultados de página

accepted.hxtml rejected.hxtml

Resultado

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.

health-plan-signup-2.xhtml

Esta página es idéntica a la página health-plan-signuo-1.xhtml.

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.

Resultados de página

page-for-accepted.hxtml page-for-rejected.hxtml

Resultado

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.

Resultado

Resultado

3 Resumen

» 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

GRACIAS

O también puedes encontrarla

en .

Saludos!

AULA VIRTUALEncuentra esta presentación en el