在spring-webflow中进入以前的视图状态时是否可以保存数据?

时间:2014-09-30 11:21:27

标签: spring spring-mvc spring-webflow spring-webflow-2

我使用 spring webflow 创建简单流程,其中包含9-10页,每页只有2-3个字段,复选框或单选按钮。流程很简单,我只使用了一个表单支持bean,每次用户点击下一个按钮时都会更新。每个页面都有两个按钮,第一个是' next'单击提交表单的按钮,更新表单bean并继续下一页,第二个按钮返回'路由到上一个视图阶段的按钮。两个按钮都正常工作。 现在突然出现了一个新的要求,即“回归”。按钮的行为类似于' next'按钮。因此,如果用户在页面上输入内容并单击后退按钮,则数据应保存在表单bean中,并且应该路由到前一阶段。请告诉我是否可以使用spring-webflow?

更新:(根据给出的答案)

所以请原谅我的天真,我是spring-webflow的新手。我更新的问题是 - 我是否需要手动提交表单,还是在spring webflow中有一个选项/配置,它会自动捕获后退按钮上的表单?绑定="真"不起作用,下面是spring-flow.xml中的代码(很明显我的formbacking bean是zFormBean):

<view-state id="page1" view="page1.jsp" model="zFormBean">
  <transition on="next" to="page2" history="invalidate" />
</view-state>

<view-state id="page2" view="page2.jsp" model="zFormBean">
  <transition on="next" to="page3"/>
  <transition on="back" bind="true" to="page1" />//->This line does not retain modify data
</view-state>

<action-state id="page3">
  <transition to="GoToPrimary" />
</action-state>

<end-state id="GoToPrimary"></end-state>

JSP代码

<liferay-portlet:actionURL var="nextURL">
    <liferay-portlet:param name="execution" value="${flowExecutionKey}"></liferay-portlet:param>
    <liferay-portlet:param name="_eventId" value="next"></liferay-portlet:param>
</liferay-portlet:actionURL>

<liferay-portlet:actionURL var="backURL">
    <liferay-portlet:param name="execution" value="${flowExecutionKey}"></liferay-portlet:param>
    <liferay-portlet:param name="_eventId" value="back"></liferay-portlet:param>
</liferay-portlet:actionURL>


<aui:form id="zFormBean" name="zFormBean"   method="post" action="<%= nextURL %>" autocomplete="off">

Middle name: <aui:input type="text" name="middleName" />
<aui:field-wrapper name="gender">
  <aui:input inlineLabel="right" name="gender" type="radio" value="male" label="male" />
  <aui:input inlineLabel="right" name="gender" type="radio" value="female" label="female"  />
</aui:field-wrapper>

<aui:button type="submit" name="next" value="next" label="Next" title="Next"/>
<aui:button type="button" name="Back" onClick="${backURL}"/>

</body>
</aui:form>

1 个答案:

答案 0 :(得分:0)

您也可以在“后退”按钮上提交表单并导航到上一页,并将所有数据保存在flowcope变量中。这样,即使对于后退按钮,您的数据也将保存在流量计中。