2011-09-06 57 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> 
相关问题