2011-05-26 28 views

Respuesta

8

No, eso no es posible. La inyección de propiedad administrada solo ocurre durante la creación del bean. Sin embargo, cuando se crea un bean con ámbito de sesión no hay necesariamente una solicitud presente y el bean del ámbito de la solicitud inyectada no sería válido en las solicitudes posteriores en el resto de la sesión.

Hazlo al revés. P.ej.

@ManagedBean 
@SessionScoped 
public class UserManager { 

    private User current; 

    // ... 
} 

y

@ManagedBean 
@RequestScoped 
public class Login { 

    private String username; 
    private String password; 

    @ManagedProperty(value="#{userManager}") 
    private UserManager userManager; 

    @EJB 
    private UserService userService; 

    public String submit() { 
     User user = userService.find(username, password); 

     if (user != null) { 
      userManager.setCurrent(user); 
      return "home?faces-redirect=true"; 
     } else { 
      addErrorMessage("Unknown login, please try again"); 
      return null; 
     } 
    } 

    // ... 
} 
+0

He intentado esto, pero dio lugar a la siguiente excepción: 'No se puede establecer UserManager propiedad de bean administrado credentials'.What me estoy perdiendo? Puse getters y setters para userManager pero nada .... – Hari

+0

Por favor, presione el botón 'Ask Question' en la parte superior derecha si tiene una nueva pregunta no relacionada con la pregunta original. No te olvides de pegar todo el seguimiento de la pila, la respuesta es, por lo general, solo directamente en su causa raíz. – BalusC

+0

Gracias por su respuesta rápida, esta es mi pregunta (recién publicada). – Hari

Cuestiones relacionadas