tel./fax: +34 91 675 33 06 info@autentia.com - www ... · ciclo de vida de jsf a través de...
Post on 11-Oct-2020
1 Views
Preview:
TRANSCRIPT
Avenida de Castilla,1 - Edificio Best Point - Oficina 21B28830 San Fernando de Henares (Madrid)
tel./fax: +34 91 675 33 06info@autentia.com - 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)
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
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
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
jmsanchez@autentia.com
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
----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
top related