我正在从主流调用子流。我已经能够将对象ShareHolderProfile从MainFlow传递到SubFlow。但是,我不确定该同一个对象是否没有传递回MainFlow或我在JSP中未正确访问它。这就是我的做法。

MainFlow.xml

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow
http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd"
start-state="retriveAccount">

    <var name="acctProfile" class="com.abc.xyz.account.ShareHolderProfile"/>

    <view-state id="retriveAccount" view="AccountView">
        <transition on="Success" to="createAccountSubFlow"/>
    </view-state>

    <subflow-state id="createAccountSubFlow" subflow="createAccountSubFlow">
        <input name="acctProfile" value="acctProfile"/>
        <transition on="finish" to="showAlternateRoute"/>
    </subflow-state>

    <view-state id="showAlternateRoute" view="showAlternateView" model="acctProfile">
        <on-entry>
            <evaluate someExpression result="viewScope.SomeValue"/>
        </on-entry>
        <transition on="viewAction" to="accountDetails"/>
    </view-state>


SubFlow.xml

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow
http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd"
start-state="showAccount">

    <input name="acctProfile" />

    <view-state id="showAccount" view="randomView" model="acctProfile">
        <on-entry>
            <evaluate expression="SomExpression"/>
        </on-entry>
        <transition on="SomeEvent" to="NextState"/>
    </view-state>

    <view-state id="NextState" view="SomeRandomView" model="acctProfile">
         <on-entry>
             <evaluate expression="controller.Method(acctProfile)" result="viewScope.profileForm"/>
         </on-entry>
         <transition on="viewResult" to="finish"/>
    </view-state>

    <end-state id="finish" />


现在,在大多数情况下,应用程序中的流程可以正常工作。但是,问题是我一直在尝试从我的jsp之一中的acctProfile访问某些属性(成员变量)。类似于-acctProfile.FirstName

但是,我无法执行此操作。是acctProfile对象没有从子流传递到主流,还是在JSP中使用不正确?请指教。

提前致谢

最佳答案

2件事:

声明输入(或输出)参数时,请确保添加要传递的对象的类型(这可能就是为什么您无法访问actProfile的属性)。例如,如果actProfile的类类型为com.mycompany.ActProfile,那么您应该这样声明:
<input name="acctProfile" value="actProfile" type="com.mycompany.ActProfile" />
您需要在MainFlow.xml和SubFlow.xml中都这样做。

为了访问actProfile(从SubFlow到MainFlow),您应该将其声明为从SubFlow到MainFlow的输出变量。这是这样做的:


MainFlow.xml:

<subflow-state id="createAccountSubFlow" subflow="createAccountSubFlow">
    <input name="actProfile" value="actProfile" type="com.mycompany.ActProfile" />
    <output name="actProfile" value="actProfile" type="com.mycompany.ActProfile" />
    <transition on="finish" to="showAlternateRoute"/>


同样,在SubFlow.xml中:
<end-state id="finish" >
 <output name="actProfile" value="actProfile" type="com.mycompany.AcctProfile" />
</end-state>

10-08 13:05