打开另一个流程的新流程

时间:2015-02-09 17:27:11

标签: jsf-2 spring-webflow-2

我们有一个具有多种功能的“主页”,其中一个是帐户命令链接。主页在main-flow.xml中定义(见下文),当我们点击此链接时,新流程应该打开。

main_page.xhtml文件:

<h:commandLink value="Account" target="_blank" action="account"/>

main-flow.xml文件:

<view-state id="main_page">

<transition-state on="account" to="newFlowOpen"/>

</view-state>

<view-state id="newFlowOpen" view="/Report/account.xhtml"/>

但是当我们点击这个链接时,不是像e2s1那样打开新的流程,而是简单地打开新的执行键,与e1s2相同的流执行错误。 请告诉我:(

1 个答案:

答案 0 :(得分:0)

因为您在main-flow.xml中添加了“newFlowOpen”作为视图状态,因此它是main-flow.xml的一部分而不是独立的独立流。

如果要创建独立的独立流,则需要在其自己的路径中创建新的“account-flow.xml”。执行此操作后,单击“主页”上的帐户链接将保留现有流并创建新的帐户流。

如果保持/记住主流状态很重要...... OPTIONALLY (执行上述操作后),您可以将新创建​​的独立帐户流嵌入主流中子流程。

在parent-&gt;子流程之间创建子流关系的原因:

  • 如果要在两个流之间传递参数或POJO(不在网址中嵌入参数)

  • 如果要保留父流的当前状态,并在子流完成后返回父流。

以下是如何创建子流的一个很好的示例:

http://www.springbyexample.org/examples/spring-web-flow-subflow-webapp.html

<!-- You would place the subflow-state below inside main-flow.xml -->

    <subflow-state id="accountSubflow" subflow="account"> 
        <input name="id" value="accountId"/> <!-- input to send to subflow-->
        <input name="person" value="person" type="foo.bar.entities.Person"/> <!-- input to send to subflow for pojos you have explicitly declare the type-->

        <output name="boolSuccess" /> <!-- output returned by the subflow -->

        <transition on="save" to="saveForm"/>  <!-- "save" = id of the <end-state id="save"> inside the subflow -->
        <transition on="cancel" to="cancelForm" /> <!-- "cancel" = id of the <end-state id="cancel"> inside the subflow -->
    </subflow-state>