ajax傳值給spring後台(json),參數自動轉換為對象,controller中用@RequestBody 擷取__js

來源:互聯網
上載者:User

項目中用到ajax進行頁面資料列表的重新整理,調用時需要用到很多查詢條件,以往的做法是用@RequestParam來逐個擷取傳入的參數,但參數多了,@RequestParam的個數會越來越多,查了下資料可以用@RequestBody來接收jason格式的參數列表並自動轉化為自訂對象,但需要引入jackson


<dependency>        <groupId>com.jayway.jsonpath</groupId><artifactId>json-path</artifactId><version>0.8.1</version><scope>test</scope></dependency><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-core-lgpl</artifactId><version>1.8.5</version></dependency><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-lgpl</artifactId><version>1.8.5</version></dependency>

ajax中這樣寫:紅色字型代表的field要和java bean中的欄位名一致,這樣jackson才可以自動轉換

function getPageSize() {$.ajax({          type: "post",          async: false,          url: 'getPageSize',          data: JSON.stringify({        sourceId: $("#source").val(),        seriesId: $("#series").val(),        modelId: $("#model").val(),        city : $("#city").val(),        strFrom: $("#from").val(),        strTo: $("#to").val()        }),        dataType: "json",         contentType: "application/json; charset=utf-8",         success: function(data) {        ...        },        error: function(data){        ...        }    });}

spring controller 中這樣寫:

@RequestMapping(value = "/queryInfo", method = RequestMethod.POST)@ResponseBodypublic List<Record> queryInfo(@RequestBody SearchCondition condition) {               //......}

這樣就可以把ajax中的data轉換為java對象了,不用一個一個參數去擷取了。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.