【问题标题】:Session scoped bean not stored in user session会话范围的 bean 未存储在用户会话中
【发布时间】:2013-08-02 11:27:20
【问题描述】:

我尝试根据 BaluC 在 JSF HTTP Session Login 中的回答开发一个简单的身份验证应用程序,但问题是我的会话范围 bean UserManager 没有存储在用户会话中,所以当 LoginFilter 检查用户是否已登录,

UserManager userManager=(UserManager)req.getSession().getAttribute("userManager");

它返回null

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 在该示例中,他将 bean 的名称命名为 user。试着喜欢UserManager userManager=(UserManager)req.getSession().getAttribute("user");
  • 如果您是 JSF 新手,请先阅读一些教程。 mkyong.com/tutorials/jsf-2-0-tutorials
  • 我把答案固定在那里。
  • @BalusC 问题还没有解决! SessionScoped Bean userManager 被创建了好几次!事实上,声明为@PostConstructinit 函数被执行了很多次!所以 loggedin 属性被重新初始化!
  • 显然你使用了错误的注解包。

标签: jsf-2 servlet-filters session-bean


【解决方案1】:

您可以尝试从以下上下文中获取它:

FacesContext context = FacesContext.getCurrentInstance();

UserManager userManager = context.getApplication().evaluateExpressionGet(context, "#{userManager}", UserManager.class);

【讨论】:

    猜你喜欢
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2015-01-27
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    相关资源
    最近更新 更多