tel./fax: +34 91 675 33 06 [email protected] - www ... · ciclo de vida de jsf a través de...

5
Avenida de Castilla,1 - Edificio Best Point - Oficina 21B 28830 San Fernando de Henares (Madrid) tel./fax: +34 91 675 33 06 [email protected] - www.autentia.com Somos su empresa de Soporte a Desarrollo Informático. Ese apoyo que siempre quiso tener... 1. Desarrollo de componentes y proyectos a medida Tecnología Desarrollo Sistemas Gran Empresa Producción autentia Certificación o Pruebas Verificación previa RFP Concurso Consultora 1 Consultora 2 Consultora 3 Equipo propio desarrollo Piloto 3a 3b 1. Definición de frameworks corporativos. 2. Transferencia de conocimiento de nuevas arquitecturas. 3. Soporte al arranque de proyectos. 4. Auditoría preventiva periódica de calidad. 5. Revisión previa a la certificación de proyectos. 6. Extensión de capacidad de equipos de calidad. 7. Identificación de problemas en producción. 3. Arranque de proyectos basados en nuevas tecnologías ¿Qué ofrece Autentia Real Business Solutions S.L? Para más información visítenos en: www.autentia.com Compartimos nuestro conociemiento en: www.adictosaltrabajo.com Gestor portales (Liferay) Gestor de contenidos (Alfresco) Aplicaciones híbridas Tareas programadas (Quartz) Gestor documental (Alfresco) Inversión de control (Spring) BPM (jBPM o Bonita) Generación de informes (JasperReport) ESB (Open ESB) Control de autenticación y acceso (Spring Security) UDDI Web Services Rest Services Social SSO SSO (Cas) Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery JPA-Hibernate, MyBatis Motor de búsqueda empresarial (Solr) ETL (Talend) Dirección de Proyectos Informáticos. Metodologías ágiles Patrones de diseño TDD 2. Auditoría de código y recomendaciones de mejora 4. Cursos de formación (impartidos por desarrolladores en activo)

Upload: others

Post on 11-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: tel./fax: +34 91 675 33 06 info@autentia.com - www ... · ciclo de vida de JSF a través de peticiones GET y con ello: evitar los forwards a nivel de servidor, forzar un cambio en

Avenida de Castilla,1 - Edificio Best Point - Oficina 21B28830 San Fernando de Henares (Madrid)

tel./fax: +34 91 675 33 [email protected] - www.autentia.com

Somos su empresa de Soporte a Desarrollo Informático.Ese apoyo que siempre quiso tener...

1. Desarrollo de componentes y proyectos a medida

TecnologíaDesarrolloSistemas

Gran Empresa

Producción

autentia

Certificacióno Pruebas

Verificación previa

RFP Concurso

Consultora 1

Consultora 2

Consultora 3

Equipo propio desarrolloPiloto

3a

3b

1. Definición de frameworks corporativos.2. Transferencia de conocimiento de nuevas arquitecturas.3. Soporte al arranque de proyectos.4. Auditoría preventiva periódica de calidad.5. Revisión previa a la certificación de proyectos.6. Extensión de capacidad de equipos de calidad.7. Identificación de problemas en producción.

3. Arranque de proyectos basados en nuevas tecnologías

¿Qué ofrece Autentia Real Business Solutions S.L?

Para más información visítenos en: www.autentia.com

Compartimos nuestro conociemiento en: www.adictosaltrabajo.com

Gestor portales (Liferay)Gestor de contenidos (Alfresco)Aplicaciones híbridas

Tareas programadas (Quartz)Gestor documental (Alfresco)Inversión de control (Spring)

BPM (jBPM o Bonita)Generación de informes (JasperReport)ESB (Open ESB)

Control de autenticación y acceso (Spring Security)UDDIWeb ServicesRest ServicesSocial SSOSSO (Cas)

Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery

JPA-Hibernate, MyBatisMotor de búsqueda empresarial (Solr)ETL (Talend)

Dirección de Proyectos Informáticos.Metodologías ágilesPatrones de diseñoTDD

2. Auditoría de código y recomendaciones de mejora

4. Cursos de formación (impartidos por desarrolladores en activo)

Page 2: tel./fax: +34 91 675 33 06 info@autentia.com - www ... · ciclo de vida de JSF a través de peticiones GET y con ello: evitar los forwards a nivel de servidor, forzar un cambio en

E-mail:

Contraseña:

Inicio Quiénes somos Tutoriales Formación Comparador de salarios Nuestro libro Charlas Más

Deseo registrarmeHe olvidado mis datos deacceso

Entrar

Estás en:Inicio Tutoriales Peticiones GET en JSF2: mapear parámetros y gestionar eventos de página.

Catálogo de serviciosAutentia

Últimas Noticias

¡EstrenamosTerrakas!

Conclusiones de@rcanalesmora de

la BarCamp2011

Mis impresionessobre la Apache

Barcamp Spain 2011 -Alejandro Pérez García

Próximo lanzamientode la serie

¡Terrakas!

Material de la charlade TDD con

Objective-C en laXPWeek 2011

Histórico deNOTICIAS

Últimos Tutoriales

Chrome RemoteDesktop

Galerías deimágenes con WOW

Slider

Validación deformularios con el

plugin JQuery Validator

Cómo incluir unbotón personalizado

para nuestro CMS en la

barra de menú de

Share |

DESARROLLADO POR:

Jose Manuel Sánchez Suárez

Consultor tecnológico de desarrollo de proyectosinformáticos.

Puedes encontrarme en Autentia: Ofrecemos serviciosde soporte a desarrollo, factoría y formación

Somos expertos en Java/J2EE

Regístrate para votar

Peticiones GET en JSF2: mapear parámetros y gestionareventos de página.

0. Índice de contenidos.

1. Introducción.2. Entorno.3. Los componentes <h:link /> y <h:button />.4. Mapear parámetros de la petición.5. Gestión de eventos de página.6. Referencias.7. Conclusiones.

1. Introducción

Inspirados en los "parámetros de página" que proporciona Jboss Seam, JSF2 nos brinda el conceptode "parámetros de la vista" que permiten de una manera sencilla y de forma declarativa, mapearparámetros de la request contra propiedades de un managed bean a través del lenguaje deexpresiones.

Con los "parámetros de la vista" se cubre un vacío que existía en JSF1.2, puesto que el ciclo de vidade una petición JSF solo se cubría completamente con peticiones POST provocadas por la interaccióncon componentes de tipo ActionSource (<h:commandButton /> o <h:commandLink />).

Ahora, con JSF2 y los componentes <h:link /> y <h:button /> se pueden lanzar eventos dentro delciclo de vida de JSF a través de peticiones GET y con ello:

evitar los forwards a nivel de servidor,forzar un cambio en la url, yhacer la url bookmarkable.

En este tutorial vamos a ver como hacer uso de dichos componentes, cómo mapear los posiblesparámetros y, por último, como forzar la ejecución de un evento dentro del ciclo de vida de lapetición GET.

2. Entorno.

1Fecha de publicación del tutorial: 2011-10-18

Page 3: tel./fax: +34 91 675 33 06 info@autentia.com - www ... · ciclo de vida de JSF a través de peticiones GET y con ello: evitar los forwards a nivel de servidor, forzar un cambio en

Síguenos a travésde:

barra de menú deTinyMCE

El patrón de diseñoTemplate Method

Últimos Tutoriales delAutor

Cómo incluir unbotón personalizado

para nuestro CMS en labarra de menú deTinyMCE

Creación de uncomponente en

JSF2: separando larenderización del propiocomponente

Uso del componenteremoteCommand de

primefaces paraactualizar el contenedorde un componente delightBox en modo iframe

Exportación delcontenido de un

dataTable de JSF con elsoporte de Primefaces

Spring scheduleannotations

Últimas ofertas deempleo

2011-09-20Comercial - Ventas -ASTURIAS.

2011-09-08Comercial - Ventas -MADRID.

2011-09-03Comercial - Ventas -VALENCIA.

2011-08-19Comercial -Compras -

ALICANTE.

2011-07-12Otras Sin catalogar- MADRID.

Jose ManuelSánchezsanchezsuarezj

2. Entorno.

El tutorial está escrito usando el siguiente entorno:

Hardware: Portátil MacBook Pro 17' (2.93 GHz Intel Core 2 Duo, 8GB DDR3 SDRAM).Sistema Operativo: Mac OS X Snow Leopard 10.6.1JSF2 (Mojarra 2.1.2)Tomcat 7.0.6

3. Los componentes <h:link /> y <h:button />.

Como hemos comentado los componentes <h:link /> y <h:button /> permiten realizar peticiones JSFa través de GET y como se enganchan con las reglas de navegación, hacer uso de los mismos es tansencillo como esto:

Lo anterior no implica que nuestros fomularios JSF se puedan ahora enviar por GET, en la peticiónque lanzan estos nuevos componentes solo viajarán los parámetros que indiquemos explícitamente.

Podemos, además, propagar los parámetros de una petición a la siguiente incluyendo los"parámetros de la vista" en estos componentes con el atributo includeViewParams="true". Con ello,en la renderización de los componentes se analizan los metadatos de la siguiente vista y se generanen la url de la petición los nombres y valores de los parámetros de la petición actual para que seanmapeados también en la siguiente.

4. Mapear parámetros de la petición.

Con la posibilidad de mapear parámetros de la request contra propiedades de un managed bean,aparte de hacer uso de los componetes <h:link /> y <h:button /> también estamos abriendo laposibilidad de enviar datos desde formularios no JSF a páginas JSF.

Como en el caso anterior, es tan simple como incluir la siguiente sección en la página que queremosque recoja los parámetros de la petición.

Con ello, frente a una petición del tipo page1.xhtml?entityId=8&pageId=1 se invocarán a losmétodos setEntityId y setPageId de managedBean EditView para asignarle los valores de dichosparámetros.

Además del mapeo, también podemos añadir obligatoriedad y conversión de dichos parámetrosdentro del ciclo de vida de la petición.

La sección <f:metadata, por convención, se suele incluir antes del componente <h:head.

5. Gestión de eventos de página.

Por último, podemos declarar un método del controlador para la gestión del evento de carga de lapágina de modo que, antes de renderizar la vista, dentro del ciclo de vida de JSF, se invocará almismo despúes de "setear" los "parámetros de la vista", como hemos visto en el punto anterior.

Entendemos que podríamos tener la siguiente gestión de eventos y propiedades dentro del ManagedBean.

1 <h:button value="A la página 2" outcome="page2" />2 <!-- renderizará: <input type="button" value="A la página 2"

onclick="window.location.href='/context/page2.xhtml'; return false;"> -->3 4 <h:link value="A la página 2" outcome="page2">5 <f:param name="entityId" value="#{entity.id}" />6 </h:link>7 <!-- renderizará: <a href="/contexto/page2.xhtml?entityId=1">link -->

1 <f:metadata>2 <f:viewParam name="entityId" value="#{editView.id}" />3 <f:viewParam name="pageId" value="#{editView.pageId}" />4 </f:metadata>

1 <f:metadata>2 <f:viewParam name="entityId" value="#{editView.id}" required="true">3 <f:validateLongRange minimum="10" maximum="20" />4 </f:viewParam>5 </f:metadata>

1 <f:metadata>2 <f:viewParam name="entityId" value="#{editView.id}" required="true">3 <f:validateLongRange minimum="10" maximum="20" />4 </f:viewParam>5 <f:event type="preRenderView" listener="#{editView.postLoad}" />6 </f:metadata>

01 @ManagedBean02 @RequestScoped03 public class EditView{04 05 @ManagedProperty(value="customerRepository")06 private CustomerRepository customerRepository;07 08 private Customer customer;09 10 private Long id;11

Page 4: tel./fax: +34 91 675 33 06 info@autentia.com - www ... · ciclo de vida de JSF a través de peticiones GET y con ello: evitar los forwards a nivel de servidor, forzar un cambio en

Esta obra está licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obras derivadas2.5

IMPULSA Impulsores Comunidad ¿Ayuda?

---- 0 personas han traído clicks a esta página

Join the conversation

Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; contu ayuda, podemos ofrecerte un mejor servicio.

Enviar comentario

(Sólo para usuarios registrados)

» Registrate y accede a esta y otras ventajas «

Anímate y coméntanos lo que pienses sobre este TUTORIAL:

El método postLoad será invocado despúes de los métodos set declarados en los metadatos y antesde renderizar la vista.

6. Referencias.

http://blogs.oracle.com/rlubke/entry/jsf_2_0_bookmarability_view

7. Conclusiones.

Si con Jboss Seam disponíamos de la misma funcionalidad dentro de la declaración de las reglas denavegación (pages.xml) con JSF2 podemos hacer uso de una funcionalidad similar usandolo encomponentes visuales y declaración de metadatos.

Es la diatriba de siempre, tenerlo todo centralizado en un único fichero o declarado allí donde se usa.Para gusto los colores y, si me preguntas, me decanto por lo segundo ;)

En nuestros proyectos le estamos dando una aplicación práctica inmediata para separar ladependencia entre controladores (managed beans) y permitir el marcado de urls desde un primermomento; teniendo en cuenta que en los parámetros que viajan vía GET no debemos exponer lógicade negocio!.

Un saludo.

Jose

[email protected]

COMENTARIOS

11 12 public void setId(Long id){13 this.id = id;14 }15 16 public void setCustomerRepository(CustomerRepository customerRepository)

{17 this.customerRepository = customerRepository;18 }19 20 public Customer getCustomer(){21 return customer; 22 }23 24 public void postLoad(){25 customer = customerRepository.getById(id);26 }27 }

sanchezsuarezj De loscreadores deaplicaciones webdistribuidas basadasen componentesmodulares llega a sumonitores #Terrakas-http://t.co/C6ujb6tB9 hours ago · reply · retweet ·favorite

sanchezsuarezj Andthe winner is...#babysoothe:heartbeat and vacuumsound emulator for#iphone ;)3 days ago · reply · retweet ·favorite

sanchezsuarezj Mi

Page 5: tel./fax: +34 91 675 33 06 info@autentia.com - www ... · ciclo de vida de JSF a través de peticiones GET y con ello: evitar los forwards a nivel de servidor, forzar un cambio en

----sin clicks + + + + + + + +

0 personas han traído clicks a esta página

powered by karmacracy

Copyright 2003-2011 © All Rights Reserved | Texto legal y condiciones de uso | Banners | Powered by Autentia | Contacto