2012-04-26 11 views
0

私は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"> 

答えて

0

完全な形式のHTMLコードが含まれていない場合は、エラーを特定することは困難です。一見、フォームタグのアクション属性が不足している可能性があります。

<form:form action="${flowExecutionUrl}" modelAttribute="paymentInfo" method="post"> 
    <input type="submit" id="_eventId" value="submitPayment" /> 
</form:form> 
+0

フローに戻って自己投稿していたため、アクションが欠落していませんでしたが、私を正しい場所で見せてくれました。私たちは、サブミット入力タイプを使用しないカスタムボタンを使用しています。私はフォームを送信していない他のボタンと混合していました。フォームを送信するのではなく、ボタンを次のビューステートにリンクするだけでした。そのため、正しい場所に移動していたのですが、間違った動作をしていました。そのような厄介な問題のための簡単な修正。 – Travelsized

関連する問題