Tabla de Contenidos

Creación de Beans de respaldo

Un bean de respaldo es una clase Java que se comunica con uno o varios formularios de la capa de la vista. Esta clase Java recoge la información introducida en dichos formularios y la procesa, lanzándolos a la capa de la lógica de aplicación para que sean procesados. A su vez comparte estos datos con la capa de la vista para que se muestren al usuario y es la encargada de realizar las tareas de validación y control de los datos introducidos. De igual forma implementa comportamientos de la vista para determinar condiciones para mostrar campos, calcular el contenido de otros, habilitar/deshabilitar etc…

Creación del Bean

Para crear un Bean de respaldo debemos hacer uso de la anotación @Name proporcionada por Seam, la cual habilita nuestra clase Java para ser inyectada en otros contextos. Esto permitirá que, mediante expresiones EL en la capa de la vista se acceda a nuestro Bean de respaldo a través del nombre dado en la anotación @Name.

@Name("manejadorMapas")
@Scope(ScopeType.CONVERSATION)
public class ManejadorMapas implements Serializable{
 
	private MapModel modeloMapa; 
 
	private List<Marker> marcadores;
 
     ... 
     ...
 
     public MapModel getModeloMapa() {
		return modeloMapa;
	}
 
	public void setModeloMapa(MapModel modeloMapa) {
		this.modeloMapa = modeloMapa;
	}
 
	public List<Marker> getMarcadores() {
		return marcadores;
	}
 
	public void setMarcadores(List<Marker> marcadores) {
		this.marcadores = marcadores;
	}
<h:form id="formularioInput">
	<p:panel id="homeInfoPanel">
	    <f:facet name="header">
		<h:outputText value="#{messages['maps.panel.title']}" />
	    </f:facet>
		<h:panelGrid columns="2" cellspacing="10px" columnClasses="alineadoTop,alineadoTop">
			<p:gmap id="map" center="38.022860,-1.174731" zoom="17"	type="HYBRID" model="#{manejadorMapas.modeloMapa}" widgetVar="map"
				style="width:800px;height:400px" streetView="true">
                         ...
                         ...
			</p:gmap>	
		</h:panelGrid>
	</p:panel>
</h:form>

Del código anterior debemos tener en cuenta:

En este punto, nuestra clase Java, ya es un Bean de respaldo y puede ser accedido desde cualquier vista e inyectado en otros Beans, si hiciera falta. Ahora es turno de especificar la vida de este Bean. Para ello utilizaremos la anotación @Scope donde especificaremos el ámbito de este Bean. La información necesaria sobre los ámbitos podemos consultarla en la entrada de la wiki Tipos de ámbitos en FundeWeb junto con la guía Elegir el ámbito correcto

Anotaciones en nuestro Java Bean

Una vez conocemos cómo crear un Bean de respaldo vamos a comentar las anotaciones más importantes que se pueden utilizar con ellos.

Anotaciones en el encabezado del bean

Son anotaciones que se especifican encima de la definición de la clase (Documentación):

@Install
@AutoCreate
@Startup
public class ManejadorMapas implements Serializable { ... }

Anotaciones en propiedades del Bean

Anotaciones para la Biyeccion

Se especifican en la definición de las propiedades y métodos get/set de la clase. Documentación.

@In
private ServicioPersistenciaAnuncios servicioAnuncios;
 
@In(create = true)
private ServicioPersistenciaAnuncios servicioAnuncios;
 
@In(create = true, value = "servicioPersistenciaAnuncios")
private ServicioPersistenciaAnuncios servicioAnuncios;

Por defecto (sino se especifica la propiedad value) la anotación @In busca un componente Seam de nombre igual al de la propiedad en sus contextos en el siguiente orden: MethodContext, EventContext, PageContext, ConversationContext, SessionContext, BusinessProcessContext y ApplicationContext. No obstante mediante la propiedad scope podemos mejorar dicha búsqueda. También se puede utilizar en un método set.

@Out
private ServicioPersistenciaAnuncios servicioAnuncios;
 
@Out(value = "servicioPersistenciaAnuncios")
private ServicioPersistenciaAnuncios servicioAnuncios;
 
@Out(value = "servicioPersistenciaAnuncios", scope = ScopeType.CONVERSATION)
private ServicioPersistenciaAnuncios servicioAnuncios;

Por defecto (sino se especifica la propiedad value) la anotación @Out crea la variable de contexto de nombre igual al de la propiedad. También se puede utilizar en un método get.

Anotaciones en métodos del bean

Se especifican en los métodos de la clase

@PostConstruct
public void inicializaBuscador() {
	this.nombreAnuncio = "";
	this.descAnuncio = "";
	this.fechaAnuncio = null;
}

Anotaciones del Estándar para inicialización y destrucción

Anotaciones de JBoss Seam para inicialización y destrucción

Si quieres utilizar los componentes inyectados mediante la anotación @In, tienes que utilizar la anotación @Create. Documentación