2012-04-26 2 views
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에 콩을 채 웁니다하고 올바르게 enterPayment 페이지에있는 양식을 채 웁니다. 하지만 submitPayment 액션 메소드를 디버깅 할 때, paymentInfo 빈은 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

관련 문제