我正在使用 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">