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



我正在使用spring-webflow创建简单的流,它有9-10个页面,每个页面只有2-3个字段,复选框或单选按钮。流很简单,我只使用了一个表单支持bean,每次用户单击下一个按钮时都会更新它。每个页面都有两个按钮,第一个是"下一个"按钮,当点击它时,它会提交表单,更新表单bean并继续到下一个页面,第二个按钮是"返回"按钮,它会路由到上一个视图阶段。两个按钮都工作正常。现在突然出现了一个新的要求,说"后退"按钮的行为应该类似于"下一步"按钮。所以,若用户在页面上输入了一些内容并单击后退按钮,那个么数据应该保存在表单bean中,并且应该路由到前一阶段。你能告诉我春季网络流量是否可行吗?

更新:(基于给出的答案)

所以请原谅我的天真,我是春季网络流量的新手。我最新的问题是-我需要手动提交表格吗?或者在spring-webflow中是否有一个选项/条款可以自动在后退按钮上捕获表格?bind="true"不起作用,下面是spring-flow.xml中的代码(很明显,我的formbackingbean是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>

您也可以在"返回"按钮上提交表单并导航到上一页,并将所有数据保存在flowscope变量中。这样,即使是后退按钮,您的数据也将保留在流程范围内。

最新更新