我对新的 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
属性值:{}
我在哪里做错了?!