从另一个请求范围的 Bean 实例化会话范围的托管 Bean

发布于 2024-12-11 13:46:04 字数 168 浏览 0 评论 0原文

我需要从另一个请求范围的 bean 实例化一个会话 bean &为该 bean 设置值。我怎样才能用另一个豆子做到这一点?

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

I need to instantiate a session bean from another request scoped bean & set values to that bean. How can I do that from another bean ?

Actually I need to instantiate the usersession bean after user has successfully logged in & I need to set the user managed property of that session bean.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一刻暧昧 2024-12-18 13:46:04

您需要以通常的方式手动实例化它并将其放入 ExternalContext#getSessionMap()

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

以正确设计的名义,我宁愿将工作委托给 JSF,只需将其注入为@ManagedProperty

@ManagedBean
@RequestScoped
public class Login {

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

    public String login() {
        // ...

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

        // ...
    }

}

You need to manually instantiate it the usual way and put it in ExternalContext#getSessionMap():

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

In name of proper design, I'd rather delegate the job to JSF by just injecting it as @ManagedProperty:

@ManagedBean
@RequestScoped
public class Login {

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

    public String login() {
        // ...

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

        // ...
    }

}
变身佩奇 2024-12-18 13:46:04

登录时设置 usersession bean 的 user 属性。如果在登录之前实例化它并不重要,因为它的 user 属性将保持为 null,直到登录完成。

并使用 @javax.inject.Inject 注释将 usersession bean 注入到您的请求处理 bean 中。

Set the user property of your usersession bean upon login. It does not matter if it is instanciated before login, because its user property will remain null until login is done.

And inject usersession bean in your request coped beans with @javax.inject.Inject annotation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文