会话范围 JSF bean 中的请求范围属性

发布于 2024-11-09 16:37:54 字数 48 浏览 3 评论 0原文

我想要一个会话范围的 JSF bean,其一个属性是请求(页面)范围的。有可能吗?

I would like to have a session scoped JSF bean with one property that is request (page) scoped. Is it possible at all?

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

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

发布评论

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

评论(1

も让我眼熟你 2024-11-16 16:37:54

不,那不可能。托管属性注入发生在 bean 创建期间。然而,当创建会话范围 Bean 时,不一定存在请求,并且注入的请求范围 Bean 在会话剩余部分的后续请求中将无效。

反过来做。例如

@ManagedBean
@SessionScoped
public class UserManager {

    private User current;

    // ...
}

@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;
        }
    }

    // ...
}

No, that's not possible. Managed property injection only happens during creation of the bean. However, when a session scoped bean is been created there is not necessarily a request present and the injected request scoped bean would be invalid in subsequent requests in the remnant of the session.

Do it the other way round. E.g.

@ManagedBean
@SessionScoped
public class UserManager {

    private User current;

    // ...
}

and

@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;
        }
    }

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