tel./fax: +34 91 675 33 06 [email protected] - www ... · Leader´s Guide to Radical Management 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)

Transcript of tel./fax: +34 91 675 33 06 [email protected] - www ... · Leader´s Guide to Radical Management de...

Page 1: tel./fax: +34 91 675 33 06 info@autentia.com - www ... · Leader´s Guide to Radical Management de Stephen Ver todos los tutoriales del autor ... en sí misma, una librería de componentes

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 ... · Leader´s Guide to Radical Management de Stephen Ver todos los tutoriales del autor ... en sí misma, una librería de componentes

Entra en Adictos a través de

Entrar Deseo registrarmeOlvidé mi contraseña

Inicio Quiénes somos Formación Comparador de salarios Nuestros libros Más

» Estás en: Inicio Tutoriales Omnifaces: una librería de utilidades para JSF2

Síguenos a travésde:

Catálogo de serviciosAutentia

Últimas Noticias

» QUEDADA INAGURAL DELCLUB KITESURF CENTRO,pantano de Alarcón.

» Buscamos programador iOS(20 Sep 2013)

» IX Autentia Cycling Day(POSPUESTO)

» 10º Aniversario de Autentia (actualizado )

» Técnicas de división dehistorias de usuario

Histórico de noticias

Últimos Tutoriales

» Grunt, el TaskRunner deJavascript

» SOA y los tipos de servicios

» Comentando User StoriesApplied for Agile SoftwareDevelopment de Mike Cohn

» JUnit test runners

» Comentando el libro TheLeader´s Guide to RadicalManagement de Stephen

Ver todos los tutoriales del autor

Jose Manuel Sánchez Suárez

Consultor tecnológico de desarrollo de proyectos informáticos.

Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría yformación

Somos expertos en Java/J2EE

Fecha de publicación del tutorial: 2013-09-29 Tutorial visitado 3 veces Descargar en PDF

Omnifaces: una librería de utilidades para JSF2.

0. Índice de contenidos.

1. Introducción.2. Entorno.3. Configuración.4. Algunos componentes visuales.5. Componentes no visuales.6. EL functions.7. Referencias.8. Conclusiones.

1. Introducción

Omnifaces es una librería de componentes para JSF2 que surje de las soluciones propuestas a problemas comunes sobreJSF2, expuestos en el conocido Stack Overflow; es obra de BalusC y Arjan Tijms; os sonarán si estáis acostumbrados abuscar información sobre JSF en el foro de Stack Overflow y en la web en general.

No es, en sí misma, una librería de componentes visuales, no suple a Primefaces, Richfaces o ICEfaces; de hecho loscomplementa, con lo que no son competidores.

Podéis echar un vistazo al showcase que está basado en primefaces, para comprobar todos los componentes queimplementa.

Desde nuestro punto de vista, tiene algunos de aquellos componentes que teníamos implementados en nuestra propia libreríade componentes para JSF1.2, que estábamos trasladando a una nueva librería para JSF2 y que complementaban todosnuestros desarrollos. Adicionalmente, recopila otros componentes bastante interesantes y otras utilidades muy recomendables;en este tutorial veremos algunas de ellas.

En la última versión soporta CDI e incorpora algunos componentes interesantes también si estamos haciendo uso de lainyección de dependencias de JEE.

Y en relación a esto último tened en cuenta que gracias al soporte de JSF2 y al de CDI, muchos de esos componentes,interfaces o listeners que dan soporte a otros se autocomfiguran por el mero hecho de incluir dentro de la librería los ficherosde configuración META-INF/faces-config.xml y META-INF/beans.xml.

2. Entorno.

El tutorial está escrito usando el siguiente entorno:

Hardware: Portátil MacBook Pro 15' (2.4 GHz Intel Core i7, 8GB DDR3 SDRAM).Sistema Operativo: Mac OS X Lion 10.7.4JDK 1.7.0_11JSF 2.1WebSphere Application Server V8.5 Liberty Profile

3. Configuración.

La configuración de Omnifaces es muy simple puesto que basta con añadir la dependencia correspondiente:

MoreShareShareShareShareShareShare

Omnifaces: una librería de utilidades para JSF2 http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

1 de 4 29/09/13 22:19

Page 3: tel./fax: +34 91 675 33 06 info@autentia.com - www ... · Leader´s Guide to Radical Management de Stephen Ver todos los tutoriales del autor ... en sí misma, una librería de componentes

Denning

Últimos Tutoriales delAutor

» JUnit test runners

» Ejecución de un análisis ensonar con el soporte de unatarea ant.

» Ejecución de tests deintegración en aplicacionesOSGI con el soporte deArquilian.

» Introducción a SLF4J:Simple Logging Facade forJava.

» Ejecución de tests unitarioscon junit en proyectos ant y suintegración en jenkins y sonarpara medir la cobertura.

Últimas ofertas deempleo

2011-09-08Comercial - Ventas -MADRID.

2011-09-03Comercial - Ventas -VALENCIA.

2011-08-19Comercial - Compras -ALICANTE.

2011-07-12Otras Sin catalogar -MADRID.

2011-07-06Otras Sin catalogar -LUGO.

Si no tenemos el soporte de maven bastaría con incluir la librería en nuestro directorio de jars /WEB-INF/lib y si estamostrabajando en un proyecto que despliega bajo una plataforma OSGI, deberíamos declarar la dependencia en el MANIFEST.MF

y en el build.properties

A partir de este momento ya podemos comenzar a usar el espacio de nombres en nuestros árboles de componentes visuales:

4. Algunos componentes visuales.

Estos son algunos de los componentes visuales que incorpora la librería, hay más pero estos son en realidad lo másinteresantes, el resto podríamos decir que o están incorporados en Primefaces o no le vemos una utilidad inmediata.

4.1. <o:cache /> soporte para caché a nivel de componentes

Incorpora un componente de caché que, como su nombre indica, permite cachear la renderización de parte del árbol decomponentes, de tal modo que se renderiza la primera vez y bien a nivel de aplicación o de sesión el resto de renderizacioneslas están cacheadas.

Dispone de un sistema de descacheo a través de la invocación a un método de un managed bean y podemos crear nuestrapropia implementación de cache para el componente aunque por defecto ya incorpora una basada en http://code.google.com/p/concurrentlinkedhashmap.

A continuación un ejemplo básico:

4.2. <o:onloadScript />.

Extiende el componente <h:outputScript> y permite invocar a una función global de javascript en la carga de la página y concualquier rerenderización de tipo ajax.

4.3. HTML5RenderKit

Añade soporte para la renderización de ciertos atributos que forman parte de la especificación de HTML5, de tal modo que loscomponentes visuales incorporan esos atributos en su renderización en cliente.

Algo similar es lo que se ha incluido ya "out of the box" en la versón 2.2 de JSF.

5. Componentes no visuales.

En este punto, omnifaces ofrece todos aquellos conversores típicos que veníamos usando para todos nuestros desarrollos yotros conceptos bastante más interesantes.

5.1. SelectItemsConverter

Evitar crear conversores individuales para cada tipo de objeto complejo a convertir dentro de un listado de opcionesseleccionables. Lo más inmediato era recurrir a un conversor por tipo de objeto que en la operación convertAsObject acudía abase de datos mediante un dao para traducir el identificador único a objeto; con lo que implica a nivel de rendimiento yaccesos innecesarios a base de datos. Nosotros ya veníamos usando un conversor que se basada en el contenido propio dela lista que se almacena a nivel de árbol de componentes en memoria, evitando esos accesos innecesarios y omnifacesincorpora un conversor con la misma filosofía. Por defecto, identifica unequívocamente un objeto invocando al método toString.

12345

<dependency> <groupId>org.omnifaces</groupId> <artifactId>omnifaces</artifactId> <version>1.6</version></dependency>

123

Bundle-ClassPath: ., WEB-INF/lib/primefaces-3.5.jar, WEB-INF/lib/omnifaces-1.6.jar

12

bin.includes = WEB-INF/lib/primefaces-3.5.jar,\ WEB-INF/lib/omnifaces-1.6.jar

12

xmlns:o="http://omnifaces.org/ui"xmlns:of="http://omnifaces.org/functions"

1234567

<o:cache key="firstCache"> <h:dataTable id="example1" value="#{cacheBean.items}" var="item"> <h:column> <i>#{item}</i> <br/> </h:column> </h:dataTable></o:cache>

123456

<h:outputLabel for="selectitems" value="Items with SelectItem list: " /><h:selectOneMenu id="selectitems" value="#{selectItemsBean.selectedEntity}" converter="omnifaces.SelectIte <f:selectItem itemLabel="Choose item" noSelectionOption="true" /> <f:selectItems value="#{selectItemsBean.selectItems}" /> <f:ajax render="selected_item" /></h:selectOneMenu>

?

?

?

?

?

?

Omnifaces: una librería de utilidades para JSF2 http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

2 de 4 29/09/13 22:19

Page 4: tel./fax: +34 91 675 33 06 info@autentia.com - www ... · Leader´s Guide to Radical Management de Stephen Ver todos los tutoriales del autor ... en sí misma, una librería de componentes

5.2. CharacterEncodingFilter

Incorpora un filtro que asigna la codificación indicada a la request cuando desde el cliente no se especifica. Nosotros veníamosusando el filtro omónimo de Spring, que básicamente hace lo mismo.

5.3. CDNResourceHandler

La renderización de recursos estáticos en el árbol DOM del cliente, con el soporte de JSF, siempre hace referencia a ladescarga de los mismos a través del contexto de la aplicación y vía javax.faces.resources; con ello, todos los recursos tipojavascript, css o imágenes que vienen incorporados en las librerías de componentes de terceros que usamos en nuestroframework o que incorporamos vía:

se descargan a través del servidor de aplicaciones.

Con CDNResourceHandler podemos añadir un prefijo o sustituir la renderización de la url para que no apunte al contexto deJSF y nos permita añadir un alias a nivel de servidor web para que no llegen todas esas peticiones al servidor de aplicaciones;lo que viene siendo un repositorio de estáticos.

Tendríamos la carga de trabajo de mantener actualizado el contenido del repositorio de estáticos con el contenido de lo queahora mantenemos empaquetado en nuestros proyectos y en los jars de las librerías de terceros, así todo el javascript de laimplementación de JSF y todas las imágenes, javascript y css de los temas de Primefaces.

Añadir el soporte es simple, en el faces-config.xml:

Y en el web.xml las expresiones que permitan realizar las sustituciones:

Han pensado en todo, porque permite el uso de Expression Language y además, por defecto, no está habilitado para elentorno de desarrollo, si queremos habilitarlo siempre tenemos que añadir un parámetro de contexto también en el web.xml.

Con todo ello, las URLs de descarga de estáticos de Primefaces pasan de esto:

a esto otro:

muy bueno, teniendo en cuenta que el estándar no proporciona ese soporte y, en otro caso, tendríamos que programarlonosotros manualmente o incluir una regla de reescritura a nivel del servidor web.

6. EL functions.

Proporciona una extensión de Expresion Language que nos permite invocar a las siguientes funciones:

of:createArray(), of:createIntegerArray(), y of:contains(): en relación a Arrays.of:iterableToList(), of:setToList(), of:mapToList(), of:joinArray(), of:joinCollection(), of:joinMap(), of:splitArray(),of:splitList(), y of:toJson(): para convertir tipos de datos.of:formatDate(), of:formatDateWithTimezone(), of:addXxx() like of:addDays(), of:xxxBetween() like of:daysBetween(),of:getMonths(), of:getShortMonths(), of:getDaysOfWeek(), of:getShortDaysOfWeek(), of:getMonth(), of:getShortMonth(),of:getDayOfWeek() y of:getShortDayOfWeek(): para operar con fechas...

12345678

<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.omnifaces.filter.CharacterEncodingFilter</filter-class></filter><filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>

123

<h:outputStylesheet library="css" name="styles.css"> <h:graphicImage library="images" name="image.jpg">#{resource['library/image.png']}

123

<application> <resource-handler>org.omnifaces.resourcehandler.CDNResourceHandler</resource-handler></application>

1234

<context-param> <param-name>org.omnifaces.CDN_RESOURCE_HANDLER_URLS</param-name> <param-value>primefaces:*=#{request.contextPath}/estaticos/primefaces/*</param-value></context-param>

1234

<context-param> <param-name>org.omnifaces.CDN_RESOURCE_HANDLER_ALWAYS_ENABLED</param-name> <param-value>true</param-value></context-param>

?

?

?

?

?

Omnifaces: una librería de utilidades para JSF2 http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

3 de 4 29/09/13 22:19

Page 5: tel./fax: +34 91 675 33 06 info@autentia.com - www ... · Leader´s Guide to Radical Management de Stephen Ver todos los tutoriales del autor ... en sí misma, una librería de componentes

Esta obra está licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5

Share | 0

» Registrate y accede a esta y otras ventajas «

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

7. Referencias.

https://code.google.com/p/omnifaces/http://snapshot-omnifaces.rhcloud.comhttp://stackoverflow.com/questions/7354464/change-javax-faces-resource-prefix-of-resource-urls

8. Conclusiones.

Estos son los componentes y características más destacables, el resto os lo dejo a vosotros y, sí os parece alguno másmerecedor de mención, os animo a que lo incluyáis en los comentarios de este tutorial o incluso a publicar uno vosotrosmismos ;)

Un saludo.

Jose

[email protected]

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

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

Omnifaces: una librería de utilidades para JSF2 http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

4 de 4 29/09/13 22:19