SpringMVC参数绑定总结

一、基本数据类型的绑定

表单代码:

<form action="/echo" method="post">
    <input name="name" value="张三" type="text"/>
</form>


controller代码:

@RequestMapping(value = "/echo")
@ResponseBody
public String echo(String name){
return name;
}

注意:

  • 方法形参中的参数名要和前台传进来的名一样,才能完成参数的绑定。
  • 若不一样,我们可以使用@RequestParam注解标明传进来参数的名称,完成参数的绑定。

二、pojo类型的绑定

Model代码:

public class User {
private String name;
private Integer age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
}

表单代码:

<form action="/save" method="post">
  <input name="name" value="张三" type="text"/>
  <input name="age" value="21" type="text"/>
</form>

 

Controller代码:

@RequestMapping("/save")
public void test(User user) {
}

三、数组和集合的绑定

1. 数组的绑定

表单代码:

<form action="/echoArray" method="post">
    <input name="name" value="张三" type="text"/>
  <input name="name" value="李四" type="text"/>
</form>


controller代码:

@RequestMapping(value = "/echoArray")
@ResponseBody
public String echo(String[] name){
return Arrays.toString(name);
}

2. List的绑定

 SpringMVC不支持直接使用List接收参数,使用时,需封装在一个pojo类中

Model代码:

public class UserVo {
private List<User> userList;

public List<User> getUserList() {
return userList;
}

public void setUserList(List<User> userList) {
this.userList = userList;
}
}

表单代码:

<form action="/echoList" method="post">
  <input name="userList[0].name" value="张三" type="text"/>
  <input name="userList[0].age" value="21" type="text"/>
</form>

Controller代码:

@RequestMapping(value = "/echoList")
@ResponseBody
public String echoList(UserVo userVo){
List<User> userList = userVo.getUserList();
return JSON.toJSONString(userList);
}

 

3. Set的绑定

 封装在pojo中,需手动创建对象,使用时下标不能超过Set集合的大小

public class UserVo {

    private Set<User> userSet = new HashSet<>();

    public UserVo() {
        userSet.add(new User());
        userSet.add(new User());
    }

    public Set<User> getUserSet() {
        return userSet;
    }

    public void setUserSet(Set<User> userSet) {
        this.userSet = userSet;
    }
}

 

表单代码:

<form action="/echoSet" method="post">
  <input name="userList[0].name" value="张三" type="text"/>
  <input name="userList[0].age" value="21" type="text"/>
</form>

Controller代码:

@RequestMapping(value = "/echoSet")
@ResponseBody
public String echoSet(UserVo userVo){
   Set<User> userSet = userVo.getUserSet();
   return JSON.toJSONString(userSet);
}

 

4. Map的绑定

  封装在pojo中

public class UserVo {
    private Map<String, User> userMap;

    public Map<String, User> getUserMap() {
        return userMap;
    }

    public void setUserMap(Map<String, User> userMap) {
        this.userMap = userMap;
    }
}

表单代码:

<form action="/echoMap" method="post">
  <input name="userMap['user1'].name" value="张三" type="text"/>
  <input name="userMap['user1'].age" value="21" type="text"/>
</form>

Controller代码:

@RequestMapping(value = "/echoMap")
@ResponseBody
public String echoMap(UserVo userVo){
   Map<String, User> userMap = userVo.getUserMap();
   return JSON.toJSONString(userMap);
}

四、json参数绑定

前台

$.ajax({  
          type: "POST",  
          contentType: "application/json",
         dataType: "json",  
          url: "/dataAnalysis/selsPoverty",  
          data: JSON.stringify({ 'name': "张三", 'age': 21 })  ,  
          success: function (data) {
      }
});

 

后台

@RequestMapping(value = "/echoJson")
@ResponseBody
public String echoJson(@RequestBody Map<String, Object> user){
   return JSON.toJSONString(user);
}

 

posted @ 2018-06-14 22:41  时间-海  阅读(941)  评论(0编辑  收藏  举报