我正在从主流调用子流。我已经能够将对象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>