JSF流程。结束电流并开始新的电流

时间:2017-07-27 08:51:16

标签: jsf jsf-2.2 omnifaces flow-scope

我有一个Web应用程序,用户可以从该应用程序的几乎所有页面开始搜索。

每次用户搜索我都想开始一个新的流程,所以基本上我有:

<p:commandLink action="#{myBean.startNewSearch}" .../>

public void startNewSearch(){
    //Some validations and pre-conditions
    Faces.navigate("exitSearchFlow");
    //Perform search
    return "startSearchFlow";
}

我可以通过记录器看到流程已启动并且流程已完成但jfwid从未更改(我使用faces-redirect = true,表单参数也不会更改)。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您必须在主流程中定义子流程。 定义用于搜索的流,并在搜索流内定义其他流,使用流调用。例如:

 <flow-definition id="searchFlow">
        <flow-call id="subFlowA">
        <flow-reference>
            <flow-id>subFlowA-File-ID</flow-id>
        </flow-reference>
        </flow-call>
        <flow-call id="subFlowB">
        </flow-call>
 </flow-definition>

您可以将参数传递给子流程。要调用子流,请使用Flow-Call的Id。例如:

<h:commandButton value="Call Flow A" action="subFlowA"/>

您可以在以下链接中找到详细信息:

JSF Flows