好的,我已经阅读了
http://docs.oracle.com/javaee/7/tutorial/doc/jsf-configure003.htm
https://blogs.oracle.com/arungupta/entry/jsf_2_2_faces_flow
还有一些帖子。通过阅读这些资源我无法回答的问题是:
如何通过导航到随机视图来摆脱流程?为了澄清我的问题,让我举一个例子。
假设我正在构建一个webapp,其侧边栏上有各种菜单(员工为crud,客户为crud,以及其他cruds和报告)。
然后我想开始一个facesflow来正确处理复杂对象的创建,将这个创建拆分成几个视图(BTW,我知道如何启动它)。但是,如果用户点击,我该如何结束流程,例如,生成与流无关的报告的链接。
流量会保留在内存中吗?离开与流程关联的视图会自动完成吗?
写下这个问题,我想到第二种选择是最好的。如果用户转到与流无关的另一个视图,则流程会神奇地消失。
答案 0 :(得分:0)
好的,在同事的帮助下,我(凭经验)找到了这个问题的答案。
答案简短:
你可以将流程留给你想要的任何视图,但是如果流程将要死亡取决于你如何离开它。如果您将通过帖子请求留给不在流量中的其他视图,则当前流程将正常结束。
但是,如果您通过获取请求,将其留给流中没有的任何视图,那么流将不会关闭,它将驻留在存储器中。
我会尽快详细说明。
<强>更新强>
为了澄清,我们通过使用Java VisualVM并检查流的实例是否会持续存在或被GC收集来发现这一点。
答案 1 :(得分:0)
您是对的,在流程内导航或流程外的视图需要使用h:commandButton / h:commandLink或编程处理导航。有关示例,请参阅this答案。
这肯定是Faces Flow的缺点,因为使用GET的导航应该是标准情况。