2

好的,所以我已阅读

http://docs.oracle.com/javaee/7/tutorial/doc/jsf-configure003.htm

https://blogs.oracle.com/arungupta/entry/jsf_2_2_faces_flow

还有一些帖子。通过阅读这些资源我无法回答的问题是:

如何通过导航到随机视图来摆脱流程?为了澄清我的问题,让我举个例子。

假设我正在构建一个 web 应用程序,它有一个带有菜单的侧边栏,其中包含各种内容(员工的 crud、客户的 crud 以及其他 crud 和报告)。

然后我想启动一个 facesflow 来正确处理复杂对象的创建,将这个创建拆分为几个视图(顺便说一句,我知道如何启动它)。但是,如果用户单击,例如生成与流程无关的报告的链接,我该如何结束流程。

流量会保存在内存中吗?离开与流程关联的视图会自动完成吗?

写下这个问题,我想到第二种选择是最好的。如果用户转到与流程无关的另一个视图,那么流程就会神奇地消失。

4

2 回答 2

0

好的,在同事的帮助下,我(凭经验)找到了这个问题的答案。

简短的回答:

可以将流程留给您想要的任何视图,但流程是否会消失取决于您如何离开它。如果您通过发布请求将其留给不在流程中的另一个视图,则当前流程将正确结束。

但是,如果您通过获取请求将其留给不在流程中的任何视图,则流程将不会关闭,它将驻留在内存中。

我会尽快详细说明。

更新

澄清一下,我们通过使用 Java VisualVM 并检查流的实例是否会持续存在或被 GC 收集来发现这一点。

于 2013-10-30T20:46:50.417 回答
0

您是对的,在流程内导航或到流程外的视图需要使用 h:commandButton / h:commandLink 或以编程方式处理导航。有关示例,请参见此答案。

这肯定是 Faces Flow 的一个缺点,因为使用 GET 进行导航应该是标准情况。

于 2014-02-13T08:41:43.667 回答