Translate

Mostrando las entradas con la etiqueta RichFaces. Mostrar todas las entradas
Mostrando las entradas con la etiqueta RichFaces. Mostrar todas las entradas

jueves, 6 de septiembre de 2012

JBoss Developer Framework


Recientemente Jboss ha liberado JBoss Developer Framework o JDF para los amigos.  El Framework en realidad es un centro de documentación central para todas las tecnologías relacionadas con JBoss y JBoss AS. Este esfuerzo de consolidación permite a los desarrolladores centrarse en un recurso único de documentos en lugar de tomar varias guías individuales de las diferentes tecnologías de JBoss (por ejemplo, una guía de Hibernate y otra para Seam).

JDF incluye más de 50 quickstarts  que son proyectos Maven que se generan con archetypes. Lo interesante es que la mayoría de los quickstarts generan los proyectos con varias capas,  Estos pueden servir ya sea como tutoriales o como la base para las aplicaciones más complicadas. Algunas de las tecnologías que incluyen: EJB, JAX-RS, JPA, JSF, CDI, HTML5, JTA, Apache Wicket...

Dejo links:
http://in.relation.to/Bloggers/AnnouncingJdfJBossDeveloperFramework
http://www.jboss.org/jdf/news/2012/06/05/welcome/

domingo, 13 de marzo de 2011

Skinnability









Siguiendo con los post sobre RichFaces:

http://emanuelpeg.blogspot.com/2011/02/richfaces.html
http://emanuelpeg.blogspot.com/2011/03/arquitectura-de-richfaces.html
http://emanuelpeg.blogspot.com/2011/03/manejo-entre-componentes-en-richfaces.html

Skinnability es la habilidad que tiene RichFaces de darle un mismo estilo a todos sus componentes.

Una importante característica son los skin parameters con estos se puede definir un valor y reusar esto en un selector css. Estos valores puede asociarlos a un particular skin.

Un skin es un simple archivo de propiedades que contiene parámetros y valores. Para crear un skin solo es necesario crear un archivo con la siguiente forma skin_name.skin.properties y es necesario que este dentro del classpath.

Con el objetivo de cambiar el skin por defecto es necesario setear la propiedad org.richfaces.SKIN en el web xml.



org.richfaces.SKIN
skin_name



RichFaces incorpora skins predefinidos, estos son:
  • DEFAULT
  • plain
  • emeraldTown
  • blueSky
  • wine
  • japanCherry
  • ruby
  • classic
  • deepMarine

Estos skin cotienen los parametros usados por Riche Faces para dar el Look and Fell a los componentes de de RichFaces.

Plain sking es un sking que no tiene parámetros es usado para proyectos que tienen su propio css.

RichFaces skinnability también permite asociar custom renders, nuevos skin y skings para nuevos custom componentes.

RichFaces permite cambiar skin es tiempo de ejecución. Permitiendo elegir al usuario un skin que prefiera.

Manejo entre componentes en RichFaces

Siguiendo con los post sobre RichFaces:

http://emanuelpeg.blogspot.com/2011/02/richfaces.html
http://emanuelpeg.blogspot.com/2011/03/arquitectura-de-richfaces.html

Veamos un concepto importante en Richfaces, RichFaces no puede agregar, ni eliminar ningún elemento pero puede remplazar a uno existente. Veamos un ejemplo que gráfica este comportamiento:










Este código a simple vista funciona, pero no es así. OutputText es renderizado al inicio con el valor false en rendered por esta razón el javascript no puede encontrar este elemento. Para seleccionar este problema se debe recurrir a un contenedor para outputText:










Como se puede ver, lo que se refresca es out2 el cual siempre esta presente y de esta forma se refrescara out1.

Arquitectura de RichFaces

RichFaces
Siguiendo con los post sobre RichFaces

http://emanuelpeg.blogspot.com/2011/02/richfaces.html

Ahora vamos a ver un poco su arquitectura. Con RichFaces se puede utilizar componentes Ajax para invocar pedidos asincronos que son automáticamente sincronizados con el árbol de componentes y actualizar un área de la pagina, sin recargar toda la pagina. La siguiente Imagen fue tomada de la documentación de Rich Faces y muestra el camino de procesamiento de un pedido:


Arquitectura RichFaces

Esto no difiere del estandar JSF y no es necesario escribir javascript para usar componentes RichFace Ajax.

La arquitectura del framework esta compuesta en 5 partes:
Filtro Ajax: Esto es esencial para agregar la capacidad Ajax a sus paginas JSF. Este filtro maneja todos los pedidos (ajax y jsf estándar), corrige y valida el código enviado, maneja los scripts, la carga de estilos, recursos de cache, etc. Se debe registrar el filtro en el web.xml
Componentes Ajax: Son similares a los componentes estándar de jsf pero envían pedidos asíncronos.
Contenedores Ajax: El framework soporta contenedores que describen áreas de la pagina web, las cuales van a ser refrescadas sin refrescar toda la pagina web. Se pueden definir varias áreas que van a ser refrescadas en una pagina, sin refrescar la pagina.
Skinnability: Permite agregar a su aplicación JSF la capacidad de skinning (temas)
RichFaces JavaScript Engine: Esto corre en el cliente y maneja las ajax requests y responces esto es manejado por el framework si necesidad de programar el comportamiento ajax, ni javascripts.

Se puede elegir cuando utilizas Ajax request o request estándar de JSF.

domingo, 27 de febrero de 2011

Validacion por Hibernate Validator


La JSR 303 - Bean Validation propone un API de validación basada en un modelo de metadatos, además establece como principal método de definición las anotaciones, aunque estas también pueden ser especificadas y/o extendidas a través de archivos de configuración XML. Otra de las características interesantes de la JSR 303 es que su API no liga especificamente la ejecución de las validaciones a una capa en particular como podría ser la capa web o la de persistencia, sino que puede ser utilizada desde cualquier punto de la aplicación.
Hibernate Validator es la implementación de referencia de la JSR 303.

Cuando validamos datos es posible que la validación sea puesta en la capa de presentación. Poniendo la validación en la capa de presentación corremos el riesgo de replicarla cuantas pantallas se puedan cargar los datos o si por ejemplo hay que exponer una funcionalidad por un web service o mecanismo remoto. El mejor lugar para las validaciones es la capa de presentación y hibernate validator nos ayuda a escribir estas validaciones por medio de anotaciones o xml.

Hibernate validator permite:
  • Definir validaciones usando XML y/o anotaciones
  • Validación completa y recursiva de objetos
  • Definición a medida de constraints y validadores
  • Personalización de mensajes de error

Las anotaciones más útiles son:

@Length(min=, max=): Chequea si el largo del string se encuentra en el rango indicado.
@Max(value=): Chequea que el valor sea menor o igual que el valor indicado.
@Min(value=): Chequea que el valor sea mayor o igual que el valor indicado.
@NotNull: Chequea que el valor no sea nulo
@Email: Chequea que el valor sea un mail valido.
@Range(min=, max=): Chequea que el valor se encuentre entre el rango especificado.
@Future: Chequea que el valor sea una fecha futura.
@Past: Chequea que el valor sea una fecha pasada.
@Pattern(regex="regexp", flag=): Cheque a que la propiedad machea con la expresión regular, given a match flag (see java.util.regex.Pattern for more information)
@Patterns( {@Pattern(...)} ): Como @Pattern, pero con multiples expresiones regulares.

Veamos un ejemplo de una clase validada por medio de Hibernate Validator:




package org.assembly.fenrir.model.student;

import java.util.Calendar;
import java.util.Date;

import org.hibernate.validator.NotNull;
import org.hibernate.validator.Past;


/**
* class that represents a student
*
* @author emanuel
*
*/
public class Student {

private static final int COUNT_MONTH_IN_YEAR = 12;

private String name;

private String lastName;

private Date birthDate;

private String comment;

public Student(String name, String lastName, Date birthDate){
this.name = name;
this.lastName = lastName;
this.birthDate = birthDate;
}

public Student() { }


@NotNull
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@NotNull
public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

@NotNull
@Past
public Date getBirthDate() {
return birthDate;
}

public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}

public String getComment() {
return comment;
}

public void setComment(String comment) {
this.comment = comment;
}


}




Pero como es que se valida? En cualquier punto de la aplicación se puede validar si los datos son correctos en cualquier capa de la aplicación, pero por ejemplo utilizando en la capa de presentación richfaces; este ya hace las validaciones atravez de las anotaciones o xml.

Si utilizas maven y quieres agregar este framework, aca va la dependencia del pom:





org.hibernate

hibernate-validator

3.1.0.GA





Como siempre dejo link:


sábado, 12 de febrero de 2011

RichFaces


RichFaces es un framework web que combina las tecnologías Ajax con JSF. Lo cual permite hacer aplicaciones web con ajax de forma fácil sin preocuparse por mantener complicados métodos javascripts.
RichFaces es un proyecto open sources que permite agregar capacidades Ajax a su aplicación JSF sin escribir javascript por lo tanto sin preocuparse por la compatibilidad entre distintos browsers.

RichFaces provee 2 conjuntos de librerías:
  • Core Ajax: Contiene componentes que son útiles para “ajaxiar” las paginas jsf y los componentes estándares de JSF. También provee componentes que generan recursos binarios como imágenes, pdfs, cvs, etc.
  • UI: Es un conjunto avanzado de etiquetas Jsf que utilizan Ajax usados para agregar características de una interfaz rica de usuario en su aplicación. Estos componentes soportan Ajax y están perfectamente integrados a la librería Core. Además soportan skills y pueden ser totalmente adaptados a sus necesidades.

Otra característica de RichFace es Component Development Kit (CDK) el conjunto de herramientas usado para crear la libraría UI, y puede ser utilizado para crear nuevos componentes.


Este post explica solo un poco de RichFaces, en futuros post veremos como hacer una aplicación con este framework.