如何处理人脸流



好的,所以我已经读过

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 来正确处理复杂对象的创建,因为这个创建分为几个视图(顺便说一句,我知道如何启动它)。但是,如果用户单击,例如,生成与流无关的报告的链接,我该如何结束流。

流是否会保留在内存中?是否通过保留与流关联的视图来自动完成?

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

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

简短的回答:

您可以将流保留为所需的任何视图,但流是否会死亡取决于您如何离开它。如果通过 post 请求将其保留到不在流中的另一个视图,则当前流将正确结束。

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

我会尽快详细说明。

更新

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

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

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

相关内容

  • 没有找到相关文章

最新更新