Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Atributos de paso ManagedBeans

Buenas.
Vereis, siempre he tenido una duda respecto a los managed beans. Los managed beans suelen gestionar objetos. Se recogen de un formulario datos, se pasan al managed bean, y del managed bean se vuelcan en el objeto (que ya es persistido, o como sea).
Pero claro, esto implica tener todos los atributos en el managed bean (con sus get y set), volcar los atributos en el objeto para guardarlo, y volcarlos en el managed bean para mostrar los datos en el formulario.
Esto no termina de gustarme porque creo que es duplicar código (get y set), ya que suelen ser iguales los del managed bean que los de la propia entidad.

¿Estaría bien guardar los datos en la propia entidad directamente?. ¿O creeis que siempre es necesario el paso previo de volcado en los managed beans?.

Un saludo.

octubre 5, 2011 | Unregistered CommenterMayantigo

por lo que entiendo lo que podrias hacer es algo asi:


@ManagedBean
@RequestScope
public UserMB {
private User user;

public void setUser() {
return user;
}

public User getUser(User user) {
this.user = user;
}
}

y en la pagina:

<h:form>
<h:inputText value="userMB.user.firstName" />
<h:inputText value="userMB.user.lastName" />
</h:form>

octubre 5, 2011 | Registered Commenterchecolopoztli

Lo que te comenta checolopoztli es válido, pero te puede convenir definir estos métodos en tu backing bean si necesitas emplear el JSR 303 (Bean Validation Framework) de JSF 2.0. Por ejemplo:


@NotNull
private Integer valorEntero;

@Max(1000)
@Min(1)
public Integer getValorEntero() {
return this.valorEntero;
}

Los parámetros de validación pueden asignarse a propiedades o a métodos "get".

Saludos,

octubre 5, 2011 | Registered Commenterantoniovl

Pero las anotaciones de jsr 303 se pueden insertar en la propia entidad, ¿no?.

Si, tenemos backing beans con los get/set implementados en él, y backing beans que insertan en la entidad directamente. Pero claro, los backing beans con get/set necesitan métodos de carga y descarga en la entidad, y mi duda era si lo veis necesario o útil ese paso. Hay gente que opina que un backing bean solo debe recibir strings y luego hacer las conversiones, otros que hacer eso es código duplicado...
Buscaba más bien opiniones para saber que forma es mejor para el mantenimiento de la aplicación a largo plazo. ¿Qué opinais?.

Un saludo.

octubre 7, 2011 | Unregistered CommenterMayantigo

Mayantigo, es una buena observación, y dependerá de cómo tengas organizado tu proyecto. Yo me acostumbré a mantener separadas las clases de dominio en un proyecto independiente que puede ser compartido por los demás proyectos. Si pusiera allí esas anotaciones, tendría que agregar las respectivas librerías como dependencias en todos los demás proyectos donde empleo esas clases, incluídos los que no están relacionados con la capa de presentación.
Saludos,

octubre 7, 2011 | Registered Commenterantoniovl

Buenas antoniovl.

Si, tienes razón. Sin embargo, la gestión de validaciones de beans no tiene porqué pertenecer solo a la capa de vista. Aunque JSF 2.0 traiga la integración con JSR 303 por defecto, no es la única integración que puede realizarse.

Imagina por ejemplo que la gestión de esas entidades provenga no solo de la interfaz, y pueda provenir por ejemplo de un web service (por poner un ejemplo). En ese aspecto, las anotaciones de validación no sobran, pues están definiendo el comportamiento de las entidades, más allá de ser meras validaciones de un formulario.

Un saludo.

octubre 17, 2011 | Unregistered CommenterMayantigo