我需要从另一个请求范围内的bean实例化一个会话bean,并为该bean设置值。我该如何从另一个bean做到这一点?

实际上,我需要在用户成功登录后实例化usersession bean,并且需要设置该会话bean的user托管属性。

最佳答案

您需要以常规方式手动实例化它并将其放在ExternalContext#getSessionMap()中:

UserSession userSession = new UserSession();
userSession.setUser(user);
externalContext.getSessionMap().put("userSession", userSession);


以适当的设计名义,我宁愿通过将其注入为@ManagedProperty来将作业委派给JSF:

@ManagedBean
@RequestScoped
public class Login {

    @ManagedProperty("#{userSession}")
    private UserSession userSession;

    public String login() {
        // ...

        if (user != null) {
            userSession.setUser(user);
        }

        // ...
    }

}

08-28 19:45