我有Seam会话作用域组件,它覆盖标准Seam标识(也包括会话作用域)的定制性。扩展的自定义项具有属性
@Out(required=false, scope=ScopeType.SESSION)private User user
在overriden login()中,我定义了一个用户对象,其中填充了来自httpservletrequest主体的信息。在应用程序中的第一个请求中,用户对象将按预期在会话范围内退出。然而,在第二个请求中,用户对象已经从会话中消失,当我访问一个注入它的页面时,我得到一个异常。
我的问题是什么时候该组件被丢弃:
user
关于 required 属性:
required
null
干杯!
第一个问题:组件在 CustomIdentity . 看看对应的Seam源代码 org.jboss.seam.core.BijectionInterceptor (Sea2.2.0)。双射发生在组件上,即类、级别。
CustomIdentity
org.jboss.seam.core.BijectionInterceptor
第二个问题:每次请求 客户身份 完成后,字段的值将被丢弃。如果使用outjection属性 require=false , the user 当前在会话上下文中被排除的对象可能被重写 null .
客户身份
require=false