我對新的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: {}
我在哪裏做錯了?!