2011-09-06 61 views
0

我使用Spring 3.0.5,Webflow 2.3.0和Spring JS進行裝飾。Spring的ElementDecoration和AjaxEventDecoration與Dijit不兼容?

我的一個形式具有下面的代碼:

<form:select path="selection"> 
    <form:option value="" label="Please select"></form:option> 
    <form:options></form:options> 
</form:select> 

<noscript> 
<button id="btnSelect" type="submit" name="_eventId_dropDownSelectionChange">Select</button> 
</noscript> 

<script type="text/javascript"> 
Spring.addDecoration(new Spring.ElementDecoration({ 
    widgetType : "dijit.form.Select", 
    widgetAttrs : { 
     forceWidth : true, 
     missingMessage : "<s:message code="NotEmpty" />", 
    } 
})); 

Spring.addDecoration(new Spring.AjaxEventDecoration({ 
    elementId : "selection", 
    formId : "templateModel", 
    event : "onChange", 
    params : { _eventId: "dropDownSelectionChange" } 
})); 
</script> 

的目的是使這取決於在下拉列表中選擇的形式的第二部分。這可以通過下拉列表的onChange上的AJAX調用來實現,也可以在無腳本的情況下按下'Select'按鈕來實現。

事情的無腳本方面的作品。我在下拉列表中選擇一些內容,然後按'選擇',表格的其餘部分將刷新。

但是,AJAX調用在其請求中沒有剛剛選擇的值。就好像AJAX調用發生在Dijit組件更新其表示之前。這些組件是否以我使用它們的方式兼容?

我可以得到它,如果工作:

  1. 我不跟一個onclick AJAX裝修裝飾組件作爲組件的Dijit,而是隻是正常的下拉列表。
  2. 我把AJAX調用上的按鈕,而不是建立在dijit的onChange

回答

0

面臨着同樣的問題,因爲它是在一個隱藏字段設置選擇的價值和Spring.AjaxEventDecoration負責其餘的照顧解決方法。

   <input id="vehicleType" name="vehicleType" type="hidden" /> 
        <select id="selectVehicle"> 
         <c:forEach var="vehicle" items="${vehicleTypes}"> 
          <option value="${vehicle.type}"><fmt:message key="${vehicle.description}" /></option> 
         </c:forEach> 
        </select> 
       </p> 
       <script type="text/javascript"> 
        Spring.addDecoration(new Spring.ElementDecoration({ 
         elementId : 'selectVehicle', 
         widgetType : "dijit.form.Select", 
         widgetAttrs : { 
          value : "${vehicleType}", 
          onChange : function(newValue){ 
          document.getElementById('vehicleType').value=dijit.byId('selectVehicle').get('value');} 
         }       
        })); 
        Spring.addDecoration(new Spring.AjaxEventDecoration({ 
         elementId : "selectVehicle", 
         formId : "quote", 
         event : "onChange", 
         params : { 
          _eventId : "dropDownVehicleSelectionChange", 
          fragments : "body" 

         } 
        })); 
       </script> 
相關問題