使用新模型值重新启动Spring Web Flow

时间:2012-07-26 14:58:54

标签: spring spring-webflow

我试图找到一种方法,如果用户重新启动流,则值不在其中。如果您查看下面的流程,您可以看到用户输入数据,预览它然后保存它。保存后,用户可以返回到输入屏幕输入新数据但是使用我当前的设置屏幕显示前-数据。如何在重启时清除它?

<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">

  <var name="customer" class="org.uftwf.domain.Customer"/>

  <view-state id="helloworld" view="input.jsp" model="customer" popup="true">
    <transition on="submit" to="preview" />
    <transition on="cancel" to="thanks" validate="false"/>
  </view-state>

  <view-state id="preview"  model="customer">
    <transition on="cancel" to="helloworld"/>
    <transition on="accept" to="save">
      <evaluate expression="hellowWorldFlowActions.addCustomer(customer)"/>
    </transition>
  </view-state>

  <view-state id="save"  model="customer">
    <transition on="accept" to="thanks"/>
  </view-state>

  <view-state id="thanks">
    <transition on="restart" to="helloworld"/>
  </view-state>
</flow>

3 个答案:

答案 0 :(得分:0)

一种简单的方法是在reset()课程中定义Customer方法,并在<view-state> <on-entry>(如“谢谢”)或{{1}中调用该方法}(“重启”)是有道理的。

答案 1 :(得分:0)

你试过了吗?

<view-state id="helloworld" view="input.jsp" model="customer" popup="true">
        <on-entry>
                <set name="flowScope.costumer" value="new org.uftwf.domain.Customer()" />
        </on-entry>
        <transition on="submit" to="preview" />
        <transition on="cancel" to="thanks" validate="false"/>
</view-state>

答案 2 :(得分:0)

您可以执行外部重定向以执行相同的流程。这是一个例子。

<var name="customer" class="org.uftwf.domain.Customer"/>

<view-state id="thanks">
   <transition on="restart" to="doRestart"/>
</view-state>

<end-state id="doRestart" view="externalRedirect:nameOfThisFlow"></end-state>