有没有办法在会话上下文中存储一些bean?即,对于每个新对话,都会创建一个属于它的新的单独bean。
答案 0 :(得分:2)
执行所需操作的最简单方法是声明一个ConversationScoped托管bean或EJB,其中JSF2管理范围。
这里有一些很好的解释:
......其中任何一项都会比我做得更好。非常简短的版本是您使用@ConversationScoped
注释来注释bean(可以是遵循bean约定的普通POJO)。然后,您@Inject
Conversation
个对象,您可以将其用于begin()
和end()
个对话。将此@ConversationScoped
bean注入其他内容。 Conversation.begin
和Conversation.end
方法控制其生命周期。
这里有一些代码可以发布,但上面的链接应该有所帮助。
@ConversationScoped
POJO托管bean的替代方法可以是@Stateful @ConversationScoped
EJB。当您在对话中需要EJB服务时,它们可以非常方便。
对于某些概念背景和细节,请阅读CDI/Weld reference on scopes - 以及CDI / Weld手册的其余部分。这是真的写得很好,非常好。