Почему веб-поток не обновляет мой модельный объект?
Я настраиваю приложение с помощью 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, а затем корректно заполняет форму на странице enterPayment. Но когда я отлаживаю метод действия submitPayment, bean-компонент paymentInfo имеет только результаты preparePayment, но ничего из представленной формы.
И так как я уверен, что кто-то спросит, вот тег открытия формы со страницы enterPayment:
<form:form modelAttribute="paymentInfo" method="post">
1 ответ
Трудно определить ошибку, если полный HTML-код формы не включен. На первый взгляд, это может быть отсутствующий атрибут действия в теге формы.
<form:form action="${flowExecutionUrl}" modelAttribute="paymentInfo" method="post">
<input type="submit" id="_eventId" value="submitPayment" />
</form:form>