Otro de los descubrimientos que he realizado tras trabajar en el último proyecto sobre JSF ha sido obtener instancias de objetos o variables creadas por el contenedor web. Como sabéis todos las clases java que utilices para trabajar con JSF (Backing bean, JavaBean...) deben estar dadas de alta en el faces-config.xml y deben de tener un constructor público sin argumentos. Esto es debido a que el contenedor de aplicaciones web (Tomcat, Glassfish ...) crearán instancias de estas clases para cada session (según el ambito especificado en faces-config.xml), esto plantea algunos problemas al querer usar singleton o simplemente al querer comunicar estas instancias de objetos ya que no existen referencias entre estas clases.
Bien pues desde cualquier clase java puedes escribir las siguientes líneas y obtendrás el valor de los atributos de otra instancia de las clases creadas por el contenedor.
FacesContext fc = FacesContext.getCurrentInstance();
String usr_id = (String)fc.getApplication().createValueBidding("#SessionScope.usr_id").getValue(fc);
Espero que os sea de utilidad a mi me ha venido de perlas.
1 comentario:
Saludos,
el createValueBiding esta descontinuado, ha sido reemplazado por el createValueExpression.
Publicar un comentario