为什么webflow不更新我的模型对象?

时间:2012-04-26 14:54:42

标签: java spring-webflow spring-webflow-2

我正在使用Spring Webflow 2设置应用程序,我遇到了一个问题。该应用程序在一个页面上进行预订,然后允许在另一个页面上进行付款。预约模型对象工作正常;我可以填写表格,提交表格,并在下面的确认屏幕上显示完全填充的对象。但是,当我使用paymentInformation模型对象执行相同操作时,在处理模型对象时,没有任何表单的内容绑定到模型对象中。

这是我的流程定义。 (当我尝试解决此问题时,我将付款流程移至子流程中。)

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

    <var name="paymentInfo" class="com.myapp.payments.domain.PaymentInfo" />
    <input name="reservation" />

    <decision-state id="paymentDecision">
        <if test="reservationServiceImpl.needsPayment(reservation)" 
            then="enterPayment"
            else="resolvePayment" />
    </decision-state>

    <view-state id="enterPayment" view="enterPayment" model="paymentInfo">
        <on-render>
            <evaluate expression="reservationMultiAction.preparePayment" />
            <set name="viewScope.stepNumber" value="3" />
        </on-render>

        <transition on="back" to="editReservation" />
        <transition on="submitPayment" to="resolvePayment" />
    </view-state>

    <action-state id="resolvePayment">
        <evaluate expression="reservationMultiAction.submitPayment" />
        <transition on="success" to="receipt" />
        <transition on="failure" to="payment" />
    </action-state>

    <end-state id="editReservation" />
    <end-state id="receipt" />
</flow>

调用preparePayment会在flowScope中填充bean,然后在enterPayment页面上正确填充表单。但是当我调试submitPayment操作方法时,paymentInfo bean只有preparePayment的结果,而且没有提交表单中的任何内容。

因为我确定有人会问,这是来自enterPayment页面的开始表格标签:

<form:form modelAttribute="paymentInfo" method="post">

1 个答案:

答案 0 :(得分:0)

如果未包含完整格式的html代码,则很难识别错误。乍一看,它可能是表单标记中缺少的操作属性。

<form:form action="${flowExecutionUrl}" modelAttribute="paymentInfo" method="post">
    <input type="submit" id="_eventId" value="submitPayment" />
</form:form>