¿Es posible obtener una referencia al beans gestionados a ejecutar en el before-invoqueApplication-phaselistener?JSF 2: ¿Accediendo a la instancia del bean administrado en el objeto detector de fase?
Antes de la fase de solicitud de invocación, debe quedar claro qué managedBean va a ejecutar el método.
Por el bien del ejemplo, suponga que hay 1 bean de administración principal para manejar 1 página de jsf.
Así que lo que necesito es básicamente:
- El usuario acceder al programa desde el menú
- Debido a que se accede desde el menú, el principal gestionar el método de frijol init() obtiene la llamada para inicializar materias como la preparación de de datos, haciendo autorización comprueba
- somete posteriores no necesita llamar al método init() nunca más hasta que se reaccessed en el menú
para implementar el punto # 2, estoy pensando en interceptar una de las fases
He comprobado los documentos de la API sobre cómo obtener el bean administrado en la implementación de las fases, pero parece que no puedo encontrar ninguno.
Después de escribir esta pregunta, me doy cuenta de que podría hacer esto en @PostConstruct o en el constructor del bean administrado, pero eso sería solo la primera vez que se construye el bean, y necesito llamar al método cada vez que jsf siendo accedido desde el menú.
¿Alguna sugerencia?
Saludos,
Albert Kam
Wow, muchas opciones. Gracias ! – bertie
No veo cómo devuelve exactamente la instancia que se ha involucrado en el método de acción. Su enfoque requiere que el nombre del frijol ya se conozca de antemano. Por cierto, prefiero la ['Application # evaluateExpressionGet()'] (http://download.oracle.com/javaee/6/api/javax/faces/application/Application.html#evaluateExpressionGet%28javax.faces.context .FacesContext,% 20java.lang.String,% 20java.lang.Class% 29) abreviatura en lugar de 'ELResolver/ELContext'. Ver también [esta respuesta] (http://stackoverflow.com/questions/2633112/jsf-get-managed-bean-by-name). – BalusC
Bueno, si su oyente de fase está escuchando en la fase de solicitud de invocación anterior, entonces el oyente de fase instanciará la instancia del objeto. Se hará referencia a esta misma instancia en el método de aplicación (que se invoca durante la fase de solicitud de invocación), ya que el estado administrado aún está en el alcance (la misma solicitud). Respondí a la pregunta de cómo hacerlo, pero no lo defiendo como la mejor solución. Proporcioné alternativas que parecen más adecuadas para lograr el objetivo final. –