Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

Deberá tener especificado un nombre (anotación @Name) de bean para que pueda ser accedido por la vista, así como también un scope (anotacion @Scope) que indicará cuanto tiempo ha de mantener en memoria su información lo que implica, a su vez, que este Bean debe implementar la interfaz Serializable.

...

Bloque de código
languagejava
@Name("manejadorAnuncios")
@Scope(ScopeType.CONVERSATION)
public class ManejadorAnuncios implements Serializable {
   ....
   ....
}

Una vez creado el Bean, deberemos incluir los Beans o EJB externos que utilicemos, haciendo uso de la anotación @In. Es importante recordar que el Log también debe importarse.

Bloque de código
languagejava
    @Logger
    private Log log;

...

 
    @In (value="org.jboss.seam.security.identity")
    private UmuIdentity identiy;

En caso de no estar seguros de si los Beans que importamos estarán o no creados, añadimos el parámetro create = true a nuestras anotaciones @In.

Bloque de código
languagejava
    @In(create = true)
    private ServicioAnuncios servicioAnuncios;

Una vez incluidos los Beans que necesitaremos importar, declaramos las variables que usaremos para dar servicio con nuestro Bean. Una vez creadas debemos crear un método get y otro set para cada una de ellas. Estos métodos tienen que tener una sintaxis concreta ya que Seam usa esta sintaxis para poder obtener los valores en la parte de la vista.

...

Una vez definidas las variables de las que haremos uso debemos preparar nuestro manejador, para ello haciendo uso de la anotación @Create sobre un método public void, estableceremos los valores por defecto que ha de tener el bean cuando se cree.

Bloque de código
languagejava
    @Create
    public void inicializaBuscador() {
	refrescarAnuncios();
	buscadorAnuncios = new AnuncioLazyDataModel();
	buscadorComentarios = new ComentarioLazyDataModel();

...

...

  • loadPage( first, pageSize, multiSortMeta,filters ): Carga la lista de los siguientes objetos a visualizar a partir de los parámetros pasados en su cabecera.

Bloque de código
languagejava
public class AnuncioLazyDataModel extends 

...

FundeWebLazyDataModel<Anuncio> {

...

 
    @Override
    protected 

...

List<Anuncio> loadPage( int first, int pageSize, 

...

List<SortMeta> multiSortMeta, 

...

Map<String, 

...

Object> filters ) {
        

...

ResultQuery<Anuncio> resultQuery =
                getServicioAnuncios().obtenerComunicacionesDto( filters, first, pageSize,
                                                                PrimeFacesUtils.sortMetaToString(multiSortMeta) );
        setRowCount( resultQuery.getResultCount().intValue() );
        return resultQuery.getResultList();
    }

...

 
    private ServicioAnuncios getServicioAnuncios() {
	return (ServicioAnuncios) Component.getInstance( ServicioAnuncios.NAME, ScopeType.STATELESS );
    }

...

 
}


Info

En las clases Lazy, como manera excepcional, podemos utilizar el DAS directamente si queremos, en lugar del servicio.

En las clases Lazy, como manera excepcional, podemos utilizar el DAS directamente si queremos, en lugar del servicio.

...

También permite establecer filtros (parámetros) externos, si no se utiliza el filtrado de columna del DataTable, utilizando los siguientes métodos:

Bloque de código
languagejava
    /**
     * Obtiene los filtros (parametros) externos, cuando no se utiliza el filtrado de columna incluido en el componente
     * DataTable.
     * 
     * @return Map<String, Object>
     *              - Los filtros externos.
     */
    public 

...

Map<String, 

...

Object> getExternalFilters() {
        return externalFilters;
    }

...

 
    /**
     * Establece los filtros (parametros) externos, cuando no se utiliza el filtrado de columna incluido en el componente
     * DataTable.
     * 
     * @param externalFilters - un Map<String, Object> con los filtros externos.
     */
    public void setExternalFilters( 

...

Map<String, 

...

Object> externalFilters ) {
        this.externalFilters = externalFilters;

...

...

  • Abrimos el fichero pom.xml del módulo y buscamos la dependencia jboss-seam-ui.

  • Cambios el scope a compile.

Quedando:

Bloque de código
    

...

<dependency>
        

...

<groupId>org.jboss.

...

seam</

...

groupId>
        

...

<artifactId>jboss-seam-

...

ui</

...

artifactId>
        

...

<scope>compile</scope>
    </

...

dependency>