私はSpring Webflow 2を使用してアプリケーションを設定していますが、問題が発生しています。アプリはあるページで予約を受け取り、別のページで支払いを許可します。予約モデルオブジェクトは正常に動作します。フォームに記入して提出すると、次の確認画面に完全に入力されたオブジェクトが表示されます。しかし、私がpaymentInformationモデルオブジェクトで同じことをすると、フォームの内容は処理されたときにモデルオブジェクトにバインドされません。Webflowがモデルオブジェクトを更新しないのはなぜですか?
ここに私のフロー定義があります。 (私はこの問題を解決しようとしていた間、私は、サブフローへの支払いの流れを移動。)
<?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">
フローに戻って自己投稿していたため、アクションが欠落していませんでしたが、私を正しい場所で見せてくれました。私たちは、サブミット入力タイプを使用しないカスタムボタンを使用しています。私はフォームを送信していない他のボタンと混合していました。フォームを送信するのではなく、ボタンを次のビューステートにリンクするだけでした。そのため、正しい場所に移動していたのですが、間違った動作をしていました。そのような厄介な問題のための簡単な修正。 – Travelsized