有没有办法在对话上下文中存储一些 bean?即,对于每个新对话,都会创建一个属于它的新的单独 bean。
问问题
2410 次
1 回答
2
做你想做的最简单的方法是声明一个 ConversationScoped 托管 bean 或 JSF2 管理范围的 EJB。
这里有一些很好的解释:
- http://docs.oracle.com/javaee/6/tutorial/doc/gjbbk.html
- http://www.ibm.com/developerworks/java/library/j-jsf2fu-0710/index.html#cdi
- http://www.theserverside.com/tip/Dependency-Injection-in-Java-EE-6-Conversations-Part-4
- http://www.andygibson.net/blog/article/cdi-conversations-part-1/
- http://www.andygibson.net/blog/tutorial/pattern-for-conversational-crud-in-java-ee-6/
- http://blog.goyello.com/2011/06/08/jee6-cdi-and-conversation-scope/
......其中任何一个都会比我做得更好。非常简短的版本是您使用注释对 bean 进行注释 - 它可以是遵循 bean 约定的普通 POJO @ConversationScoped
。然后你@Inject
是一个Conversation
对象,你可以使用它begin()
和end()
对话。将这个@ConversationScoped
bean 注入到其他东西中。Conversation.begin
andConversation.end
方法控制它的生命周期。
这里有很多代码要发布,但上面的链接应该会有所帮助。
POJO 托管 bean的替代方案@ConversationScoped
可以是@Stateful @ConversationScoped
EJB。当您在对话中需要 EJB 服务时,它们会非常方便。
有关一些概念背景和详细信息,请阅读关于范围的 CDI/Weld 参考- 以及 CDI/Weld 手册的其余部分。它写得非常好,非常好。
于 2012-08-20T14:05:53.603 回答