在我的JSF项目中,我有一个多页面向导。我正在为该向导使用@ConversationScoped
CDI bean。谈话效果很好。当用户进入向导的第一页时,将开始新的对话。当用户单击任何页面中的提交按钮时,会话结束。但我有几个问题。
答案 0 :(得分:1)
大多数应用程序都会使用某种跟踪用户当前所在位置的系统。这应该是由JSF 2.2中的@FlowScoped帮助的。如果您可以使用它,那么应该为您管理所有内容。找到例子应该很容易。
如果您无法使用FlowScoped并希望继续使用@ConversationScoped,则必须实施自己的系统以跟踪用户所在的位置。当用户不在您的流程中时,您将结束对话。
@Inject Conversation conversation;
// conversation.end();
以下是实现此功能的有用部分:How to cleanly end a CDI @ConversationScoped
但是我会选择http://deltaspike.apache.org/core.html并使用:进行对话。
MyBean myBean = BeanProvider.getContextualReference(MyBean.class, false);
我个人会对Deltaspikes JSF模块中的类型安全导航进行扩展,以便在我无法使用FlowScoped时实现相同的目的。
祝你好运