进入 Faces Flow 后,我想通过转到不属于该流的任何页面来退出它。
问题是,如果我出去,例如通过h:link
. 实际上,如果我再次单击h:commandButton
其操作为 flowId 的操作,我将返回上一个流,而不是创建一个新流。
如何在不让用户显式单击h:commandButton
其操作对应于流的返回节点的情况下退出流?甚至可能吗?
编辑:
让我们以这个流程为例(来自JEE 7 示例)
@Produces @FlowDefinition
public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
String flowId = "flow1";
flowBuilder.id("", flowId);
flowBuilder.viewNode(flowId, "/" + flowId + "/" + flowId + ".xhtml").markAsStartNode();
flowBuilder.returnNode("taskFlowReturn1").
fromOutcome("#{flow1Bean.returnValue}");
flowBuilder.returnNode("goHome").
fromOutcome("#{flow1Bean.homeValue}");
flowBuilder.inboundParameter("param1FromFlow2", "#{flowScope.param1Value}");
flowBuilder.inboundParameter("param2FromFlow2", "#{flowScope.param2Value}");
flowBuilder.flowCallNode("call2").flowReference("", "flow2").
outboundParameter("param1FromFlow1", "param1 flow1 value").
outboundParameter("param2FromFlow1", "param2 flow1 value");
return flowBuilder.getFlow();
}
如果用户点击,流程将终止
<h:commandButton id="index" value="home" action="goHome" />
或者
<h:commandButton id="return" value="return" action="taskFlowReturn1" />
但是如果用户点击
<h:link outcome="someOutcomeUnrelatedToTheFlow"/>
或者,如果用户在浏览器中更改了 url,而不删除jfwid
? 似乎流程没有终止,但用户实际上是在流程之外浏览。
这对我来说似乎有点奇怪:如果没有用户对 commandButton/commandLink 的特定操作,我找不到任何退出流程(并释放支持 bean)的方法。
顺便说一句:我正在 WildFly 8 CR1 上对此进行测试。