Почему веб-поток не обновляет мой модельный объект?

Я настраиваю приложение с помощью 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>
Другие вопросы по тегам