2015-02-23 68 views
1

JSP代碼如下:獲得形式:期權價值在AJAX

<form:select id="taxId" path="taxSeqNo" cssClass="defaultText"  <form:options items="${taxListItemsBean.taxList}" itemValue="key" itemLabel="label"/> 
</form:select> 

,其中$ {} taxListItemsBean.taxList被聲明爲

private List<KeyItemDto> taxList; 
在form.java類

我想通過ajax將此taxList傳遞給控制器​​。在Ajax代碼是:

//.. 
var options = { 
       url: "${pageContext.request.contextPath}/abc.html", 
       dataType : 'json', 
       contentType:'application/json', 
       data: JSON.stringify(taxList), 
       beforeSubmit: function(data,set,options) { 
        if(!confirm("xxx?")) { 
         return false; 
        } 
       }, 

..// 

控制器代碼:

@RequestMapping(value = "/abc.html", method = RequestMethod.POST) 
    public ModelAndView executeConfirmTaxHttpServletRequest request, 
     , @RequestBody List<KeyItemDto> taxList) { 

System.out.println("taxList "+taxList); 

} 

與上面的代碼即時得到在阿賈克斯NPE在這一行:

data: JSON.stringify(taxList), 

不知道什麼是錯的代碼以及它將如何傳遞給控制器​​並進行檢索。任何輸入讚賞。

回答

1

如果我沒有錯,你想在ajax中獲得下拉選擇的值,那麼你想從ajax調用Controller。

如果我的理解是正確的,那麼你必須使用JQuery .change()函數來獲取選定的值,然後對服務器進行ajax調用。

下面的代碼給出了明確的想法,
JS代碼:

var taxValues = []; 
    $('#taxId option').each(function() { 
       taxValues.push($(this).attr('value')); 
      }); 
    $('#taxId').change(function(e) { 
     //var taxValue = $('#taxId :selected').val(); // gives the dropdown selected value 
     $.ajax({ 
      url: "/getTaxValue", 
      data: "taxValues="+ taxValues, //passing the selected value to controller as a parameter 
      success: function(result){ 
       alert(result); 
      } 
     });  
    }); 

在這裏,我們通過選定的值到控制器作爲請求參數,在控制器您會收到使用@RequestParam註釋此值。

控制器代碼:

@RequestMapping(value="/getTaxValue", method=RequestMethod.GET) 
    public String getTaxValue(@RequestParam("taxValues") String[] taxValues) { 

     return taxValues; 
    } 
+0

我想整個下拉列表不只是選擇的值。我能夠像上面描述的那樣檢索選定的值,但無法獲取整個下拉列表值。 – JNPW 2015-02-23 14:54:22

+0

JNPW,我編輯了我的答案,獲取數組中的所有下拉值,並將其作爲數組傳遞給Controller。 – 2015-02-24 04:22:46