SpringMVC @RequestBody @RequestParam @PathVariable 等參數綁定注解詳解


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){ 
                                       
            } 
         }); 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM