我对新的JEE6 CDI规范有疑问,特别是@Inject和@Named
注释的使用似乎已经替换了jsf特定的@ManagedBean
(用于注册资源)和@ManagedProperty
(用于注射)注释。从会话范围检索@Named托管bean
假设你有一个bean类“User
”注明@ManagedBean @SessionScoped
和这个类的一个对象是使用@ManagedProperty
那么当这个对象被创建在任何豆注入和注入它也放在会议,我可以访问会话(使用实施例中的过滤器)和检索对象:
User user = (User)((HttpServletRequest) request).getSession().getAttribute("user");
所以,如果我使用@Named @SessionScoped
然后@Inject
尝试相同的逻辑(在GlassFish中3.1.2)我可以证实,有User
类型的在没有这样的对象会议,但这是我在会议中发现的:
attribute_name: org.jboss.weld.context.conversation.ConversationIdGenerator attribute_value: [email protected]765 attribute_name: org.jboss.weld.context.ConversationContext.conversations attribute_value: {}
我在哪里做错了?!