sábado, 16 de agosto de 2014

Acceder a otro bean desde un bean

Descripción: En este articulo veremos cómo acceder a otro bean, y ejecutar un método o tomar el valor de una variable. Veremos los objetos getSessionMap y getRequestMap.

En primer lugar tenemos que tener en cuenta qué tipo de bean es el que queremos acceder, si es un bean de tipo session o de tipo request.
Dependiendo de cual sea, se utilizara el objeto getSessionMap (beans de tipo sesión) o getRequestMap (beans de tipo request).

Para acceder a un valor en un bean de sesión (session bean): 

Object objeto = context.getExternalContext().getSessionMap().get("nombreDelBean");
nombreDelBean objetoBean = null;
if (objeto != null)
{
     objetoBean = (nombreDelBean) objeto;
}

A partir de aquí, podemos llamar a cualquier método público del objetoBean o acceder a cualquier variable.
Esta es otra de las razones por las que es preferible crear accesors en las propiedades del bean, para no permitir el acceso directo si no es a través de una función.

Hay que tener en cuenta de que un bean de sesión no estará activo hasta que no haya sido llamado con anterioridad. Es decir, si intentamos obtener el bean que queremos obtener, si no ha sido llamado antes, no aparecerá dentro del objeto getSessionMap() o en el caso de devolvernos un valor, obtendremos un null.
Por eso se realiza la comprobación más adelante, para evitar estas situaciones.

Para acceder a un valor que se encuentra en un bean de request (request bean)

objeto = FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("nombreDelBean");
nombreDelBean objetoBean = null;
if (objeto != null)
{
     objetoBean = (nombreDelBean) objeto;
}

En objetoBean, dejamos una instancia del bean de tipo request que existe en la aplicación.


Artículos relacionados:
-
-
-