代码之家  ›  专栏  ›  技术社区  ›  Markos Fragkakis

Seam会话作用域组件在下一个请求中消失

  •  2
  • Markos Fragkakis  · 技术社区  · 15 年前

    我有Seam会话作用域组件,它覆盖标准Seam标识(也包括会话作用域)的定制性。扩展的自定义项具有属性

    @Out(required=false, scope=ScopeType.SESSION)private User user
    

    在overriden login()中,我定义了一个用户对象,其中填充了来自httpservletrequest主体的信息。在应用程序中的第一个请求中,用户对象将按预期在会话范围内退出。然而,在第二个请求中,用户对象已经从会话中消失,当我访问一个注入它的页面时,我得到一个异常。

    我的问题是什么时候该组件被丢弃:

    • 在自定义组件的每个方法之后(即使它不包含对 user )?
    • 在包含用户组件引用的每个方法之后?

    关于 required 属性:

    • 如果在输出时,用户对象的计算结果为 null ,是否将已退出的用户从会话范围中删除?

    干杯!

    1 回复  |  直到 15 年前
        1
  •  3
  •   kraftan    15 年前

    第一个问题:组件在 CustomIdentity . 看看对应的Seam源代码 org.jboss.seam.core.BijectionInterceptor (Sea2.2.0)。双射发生在组件上,即类、级别。

    第二个问题:每次请求 客户身份 完成后,字段的值将被丢弃。如果使用outjection属性 require=false , the user 当前在会话上下文中被排除的对象可能被重写 null .

    推荐文章