2014-06-05 10 views
0

전체 페이지를 다시로드하지 않고 양식을 제출하려고합니다. 나는 기본리스 트 로직을 우회하기 위해 이벤트 리스너를 사용할 때 로직을 가지고 있다고 확신한다. 내 DSP 양식이ATG dsp 양식 입력 값

<dsp:form action="" id="storeCart" formid="storeCart" method="post"> 
    <dsp:droplet name="/atg/dynamo/droplet/IsEmpty"> 
     <dsp:param name="value" param="element.WarrantyId"/> 
     <dsp:oparam name="true"> 
      <input type="text" value='<dsp:valueof param="element.quantity" />' maxlength="3" class="inputQuantity" name='<dsp:valueof param="element.catalogRefId"/>' id='quantity-<dsp:valueof param="element.catalogRefId"/>'/> 
     </dsp:oparam> 
     <dsp:oparam name="false"> 
     <dsp:valueof param="element.quantity" /> 
      <input type="hidden" value='<dsp:valueof param="element.quantity" />' maxlength="3" class="inputQuantity" name='<dsp:valueof param="element.catalogRefId"/>' id='quantity-<dsp:valueof param="element.catalogRefId"/>'/> 
     </dsp:oparam> 
    </dsp:droplet> 
    <td id="buttonHolder"><dsp:input value="Submit" type="submit" bean="......"/></td> 
</dps:form> 

문제처럼 보인다

$("body").on("click", '#buttonHolder', function() { 
     $.ajax({ 
      type: 'POST', 
      data: $('#storeCart').serialize(), 
      dataType: "html", 
      url: "/inc/store/cart/cart-contents.jsp", 
      cache: false, 
      success: function(response) { 
       $("#formHolder").html(response); 
      } 
     }); 
     return false; 
    }); 

은 내가 프런트 엔드에 그들에 추가 한 후 값을 변경할 것하지 않습니다. 더 명확하게하려면 내가 먼저 가서 다음 요소를 검사, 4로 변경하면

입력 필드 값 1이며, 값은 여전히 ​​1, 양식이 제출 될 때이 반영되고 응답이 생성됩니다 . 그래서 console.log ($ ('testID'). val()); 입력에 4 (원하는)가 아니라 1을 제공합니다. 이것은 요청 헤더에서도 처리됩니다.

편집 : 나는 더 정확하게 자신의 그림자 숨겨진 필드가 필드를 반영하기 위해 DSP 양식 섹션을 업데이트

. 나는 새로운 입력을 받아들이도록 양식을 얻는 것처럼 보이지 않습니다. 값은 새 값을 크롬 관리자에 삽입 할 때조차도 jsp 변수에 저장된 값으로 간주됩니다.

답변

0

모든 입력 필드에는 내부적으로 DSP 태그에서 생성 된 숨겨진 양식 요소가 있습니다. 관련 숨겨진 필드를 설정하고 있습니까 (예 : firstname 텍스트 필드에 _D : /atg..etc.로 시작하는 해당하는 숨김 필드가 있음)

숨겨진 값은 현재 서버가 보내는대로 설정되어야합니다. 텍스트 필드를 업데이트 할 때 페이지를 다시로드하지 않습니다.

<input id=“testid” class=“teststyle " type=“text” value="" name="/atg/something/SomeFormHandler.value.firstname” maxlength="60"> 
<input type="hidden" value=" " name="_D:/atg/something/SomeFormHandler.value.firstname> 
+0

예, 여기에 숨겨진 필드가 있습니다. 이 입력 쌍의 값을 크롬 콘솔에서 변경할 수 있습니까? 뒤로 물러서서 전체 페이지를 새로 고칠 일반 폼 제출을 수행하지 않는 한 변수 변경을 관리 할 수 ​​없습니다. – bneigher

+0

페이지가 다시로드되면 서버가 _D (숨겨진 필드)를 채우기 위해 특정 작업을 수행하고 있습니다. 서버 측에서 변경된 값을 알고 백그라운드에서 적절한 값을 채 웁니다. – Mouli

+0

DYN_SESSION_CONF를 점검하여 양식이 실제로 백엔드로 제출되도록하십시오. – Mouli

0

위의 코드는 ATG dsp 태그의 사용법에 일관성이없는 것으로 보입니다.

<input> 태그 대신 <dsp:input> 태그를 사용해보세요. 이렇게하면 양식을 제출할 때 필드가 ATG FormHandler에 적절히 매핑되도록 할 수 있습니다.

<dsp:input bean='YourFormHandler.value.quantity' name='<dsp:valueof param="element.catalogRefId"/>' id='quantity-<dsp:valueof param="element.catalogRefId"/>' type="hidden" iclass="inputQuantity" value='<dsp:valueof param="element.quantity" />' maxlength="3" />