我们有一个具有多种功能的“主页”,其中一个是帐户命令链接。主页在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相同的流执行错误。 请告诉我:(
答案 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>