Springmvc受信集合パラメータ、集合オブジェクト

3871 ワード

Spring MVCは、集合要求パラメータを受信する場合、Controllerメソッドの集合パラメータに@RequestBodyまたは@RequestParamを追加する必要があり、@RequestBodyがデフォルトで受信するenctype(MIME符号化)はアプリケーション/jsonであり、したがって、POST要求を送信する際には、要求メッセージヘッダ情報(ajaxがデータを送信する際の設定コミットタイプ:contentType:'application/json;charset=utf-8'、//要求ヘッダ情報の設定)を設定する必要があります.そうしないと、Spring MVCは、集合要求パラメータを解析する際に自動的にJSONデータに変換して対応する集合に解析しません.
本稿では,List,List,List>,User[],User(beanにはListが含まれる)のいくつかの複雑な集合パラメータの例について述べる.
eg 1:List集合パラメータの受信
1、Jsコード:
var arr = [1,2,3];
$.jBox.confirm("        ?", "warning",function () {
    $.ajax({
       type: 'get',
       url: '${base.contextPath}/giving/index/del',
       dataType: 'json',
       data: {ids: arr},
       success: function (result) {
          …
       },
       error: function (result) {
          …
       }
   })
})

2、Controller方法:
@Controller
@RequestMapping("/wxgiving")
public class WxGivingController{
  @RequestMapping(value = "/index/del", method = RequestMethod.GET)
  @ResponseBody
  public ReturnMsg del (@RequestParam(value = "ids[]")List  ids){
     …
  }
}

eg 2:List,User[]集合パラメータを受信する:
1、jsコード
var userList = new Array();
userList.push({name: "  ",pwd: "123"});
userList.push({name: "  ",pwd: "223"});
$.ajax({
    type: "POST",
    url: "${base.contextPath}/user/index/add",
    data: JSON.stringify(userList),//       JSON   
    dataType:"json",
    contentType : 'application/json;charset=utf-8', //       
    success: function(result){
        …
    },
    error: function(result){
        …
    }
  });

2、Controller方法:
@Controller
@RequestMapping(value = "/user")
public class UserController(){
  @RequestMapping(value = "/index/add", method = RequestMethod.POST)
  @ResponseBody
  public ReturnMsg addOrEdit(@RequestBody List userList) {
     …
  }
}

eg 3:受信List>集合パラメータ
1、jsコード
var userList = new Array();
userList.push({name: "  ",pwd: "123"});
userList.push({name: "  ",pwd: "223"});
$.ajax({
    type: "POST",
    url: "${base.contextPath}/user/index/add",
    data: JSON.stringify(userList),//       JSON   
    dataType:"json",
    contentType : 'application/json;charset=utf-8', //       
    success: function(result){
        …
    },
    error: function(result){
        …
    }
  });

2、Controller方法:
@Controller
@RequestMapping(value = "/user")
public class UserController(){
  @RequestMapping(value = "/index/add", method = RequestMethod.POST)
  @ResponseBody
  public ReturnMsg addOrEdit(@RequestBody List> listMap) {
    …
  }
}

eg 4:Userエンティティークラス
1、jsコード
var userArray= new Array();
userArray.push({name: "  ",pwd: "123"});
userArray.push({name: "  ",pwd: "223"});
var user = {};
user.name = "  ";
user.pwd = "888";
user.userList= userArray;
$.ajax({
    type: "POST",
    url: "${base.contextPath}/user/index/add",
    data: JSON.stringify(user),//       JSON   
    dataType:"json",
    contentType : 'application/json;charset=utf-8', //       
    success: function(result){
        …
    },
    error: function(result){
        …
    }
  });

2、Controller方法:
@Controller
@RequestMapping(value = "/user")
public class UserController(){
  @RequestMapping(value = "/index/add", method = RequestMethod.POST)
  @ResponseBody
  public ReturnMsg addOrEdit(@RequestBody User user) {
    List userList= user.getUserList();