一旦我進入了Faces Flow,我想通過轉到任何不屬於流程的頁面來退出它。如何退出流程?
問題是,如果我走出室外,流量不會被破壞,例如通過h:link
。 事實上,如果我再次點擊一個h:commandButton
,其作用是flowId,我將回到上一個流程,而不是創建新流程。
如何退出流程而不讓用戶明確點擊h:commandButton
其操作對應於流程的返回節點? 它甚至有可能嗎?
編輯:
讓我們本流程例如(來自JEE 7 samples)
@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
?看起來流程沒有終止,但用戶實際上是在流程之外瀏覽。對於我來說這似乎有點奇怪:我無法找到任何方式退出流(並釋放支持bean),而無需用戶在commandButton/commandLink上執行特定操作。
btw:我在WildFly 8 CR1上測試了這個。
你能張貼你的流程聲明嗎? –
是的,我剛剛編輯了這個問題。 –