request 數據到handler method 參數數據的綁定所用到的注解和什么情形下使用:
http://blog.csdn.net/walkerjong/article/details/7946109 (關於更多參數綁定常用的注解)
@PathVariable
$.ajax({ url: ctx + '/management/cart/delete/'+id, async: false, cache: false, type: "POST", success: function (data) { }, error: function (xhr) { } });
@ResponseBody
@RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
public int delete(@PathVariable int id){
return 0;
}
//若方法參數名稱和需要綁定的uri template中變量名稱不一致,需要在@PathVariable("name")指定uri template中的名稱
public int delete(@PathVariable("id") int rsId){
return 0;
}
@RequestParam
A) 常用來處理簡單類型的綁定,通過Request.getParameter() 獲取的String可直接轉換為簡單類型的情況( String--> 簡單類型的轉換操作由ConversionService配置的轉換器來完成);因為使用request.getParameter()方式獲取參數,所以可以處理get 方式中queryString的值,也可以處理post方式中 body data的值;
B)用來處理Content-Type: 為 application/x-www-form-urlencoded編碼的內容,提交方式GET、POST;
C) 該注解有兩個屬性: value、required; value用來指定要傳入值的id名稱,required用來指示參數是否必須綁定;
$.ajax({ url: ctx + '/management/cart/delete?id='+id, async: false, cache: false, type: "POST", success: function (data) { }, error: function (xhr) { } }); @ResponseBody @RequestMapping(value = "/delete", method = RequestMethod.POST) public int delete(@RequestParam("id") int id){ return 0; }
@RequestBody
該注解常用來處理Content-Type: 不是application/x-www-form-urlencoded編碼的內容,而是application/json, application/xml等;
基於ajax的方法請求,將contentType設置為application/json
var cartId = 1; $.ajax({ url: ctx + '/management/cart/delete', async: false, cache: false, type: "POST", contentType: "application/json", data: cartId, success: function (data) { }, error: function (xhr) { } }); @ResponseBody @RequestMapping(value = "/delete", method = RequestMethod.POST) public int delete(@RequestBody Integer id) { return 0; }
@RequestBody接收的是一個Json對象的字符串,而不是一個Json對象。然而在ajax請求往往傳的都是Json對象,后來發現用 JSON.stringify(data)的方式就能將對象變成字符串。同時ajax請求的時候也要指定contentType:"application/json" 這樣就可以輕易的將一個對象或者List傳到Java端,使用@RequestBody即可綁定對象或者List.
var params = [1,2,3]; $.ajax({ url: ctx + '/management/cart/delete', async: false, cache: false, type: "POST", contentType: "application/json", data: JSON.stringify(params), success: function (data) { }, error: function (xhr) { } }); @ResponseBody @RequestMapping(value = "/deletes", method = RequestMethod.POST) public int deletes(@RequestBody List<Integer> ids) { return 0; }
@ResponseBody @RequestMapping(value = "/create", method = RequestMethod.POST) public int create(@RequestBody ExtTaskAssignmentCfg extTaskAssignmentCfg) { UserInfo userInfo = contextService.getContextUserInfo(); extTaskAssignmentCfg.setInsman(userInfo.getUsername()); extTaskAssignmentCfg.setInsdate(new Date()); return this.extTaskAssignmentCfgService.insert(extTaskAssignmentCfg); } var jsonObject = {}; jsonObject.id = assignmentCfgId; jsonObject.activitiId = activityId; jsonObject.configurationDetail = configurationDetail; var jsonStr = JSON.stringify(jsonObject); $.ajax({ url: url, async: false, cache: false, type: "POST", contentType:"application/json", data: jsonStr, success: function (data) { }, error: function (xhr) { alert("保存受理人分配配置失敗") } })
@RequestMapping(value = "saveUser", method = {RequestMethod.POST }}) @ResponseBody public void saveUser(@RequestBody List<User> users) { userService.batchSave(users); } var saveDataAry=[]; var data1={"userName":"test","address":"gz"}; var data2={"userName":"ququ","address":"gr"}; saveDataAry.push(data1); saveDataAry.push(data2); $.ajax({ type:"POST", url:"user/saveUser", dataType:"json", contentType:"application/json", data:JSON.stringify(saveDataAry), success:function(data){ } });
