我对新的 JEE6 CDI 规范有疑问,特别是 @Inject 与@Named
似乎已经取代了 jsf 特定@ManagedBean
(用于注册资源)和@ManagedProperty
(用于注入)注释的注释结合使用。
假设您有一个 bean 类“ User
”注释@ManagedBean @SessionScoped
,并且该类的一个对象被注入到任何 bean 中,@ManagedProperty
然后当这个对象被创建和注入时,它也被放入会话中,我可以访问会话(例如在过滤器中)并检索对象使用:
User user = (User)((HttpServletRequest) request).getSession().getAttribute("user");
因此,如果我尝试使用相同的逻辑(在 glassfish 3.1.2 中)@Named @SessionScoped
,然后@Inject
我可以确认会话中没有这种类型的对象User
,但这是我在会话中找到的:
属性名称:org.jboss.weld.context.conversation.ConversationIdGenerator 属性值:org.jboss.weld.context.conversation.ConversationIdGenerator@b374765 属性名称:org.jboss.weld.context.ConversationContext.conversations 属性值:{}
我在哪里做错了?!