0

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

1 に答える 1

0

完全な形式の html コードが含まれていない場合、エラーを特定するのは困難です。一見すると、form タグに action 属性が欠落している可能性があります。

<form:form action="${flowExecutionUrl}" modelAttribute="paymentInfo" method="post">
    <input type="submit" id="_eventId" value="submitPayment" />
</form:form>
于 2012-05-08T08:32:40.097 に答える