SpringMVC接收多个对象方法总结

SpringMVC接收多个对象方法总结

参考 : http://www.codeceo.com/article/springmvc-4-ways.html

一共有四中方法

  • 第1种方法:表单提交,以字段数组接收;
  • 第2种方法:表单提交,以BeanListModel接收;
  • 第3种方法:将Json对象序列化成Json字符串提交,以List接收;
  • 第4种方法:将表单对象序列化成Json字符串提交,以List接收;
    第4种方法其实是第3种方法的升级,就是将表单转成Json对象,
    再转成Json字符串提交;然而,第4种方法还不支持含有多选控件表单的提交,故应该还有第5种加强版的方法。

第2种方法:表单提交,以BeanListModel接收;

HTML

    <form action="/user/submitUserList_2" method="post">
        ID:<input type="text" name="users[0].id"><br/>
        Username:<input type="text" name="users[0].name"><br/>
        Password:<input type="text" name="users[0].pwd"><br/><br/>

        ID:<input type="text" name="users[2].id"><br/>
        Username:<input type="text" name="users[2].name"><br/>
        Password:<input type="text" name="users[2].pwd"><br/><br/>
        <input type="submit" value="Submit">
    </form>

Java代码:

除了刚才公用的User类,还要封装一个User的容器类UserModel:

public class UserModel {
    private List<User> users;

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    public UserModel(List<User> users) {
        super();
        this.users = users;
    }

    public UserModel() {
        super();
    }

}

SpringMVC Controller方法:


@RequestMapping(value = "/submitUserList_2", method ={RequestMethod.POST})
@ResponseBody
public String submitUserList_2(UserModel users)throws Exception{
    String result = "";
    List<User> userList = users.getUsers();
    if(userList == null || userList.size() <= 0){ return "No any ID.中文"; }
    result = this.showUserList(userList);
    return result;
}

优点 1、方便快捷页面不复杂 2、好存入一些总览信息 例如 用户的 籍贯 等信息(因为它包了一层) 3、可以多层嵌套如 : users[0].addres[0].str ; users[0].addres[0].code 缺点 : 1、外面需包一层 2 、 这种方法在HMTL中需要给name属性添加[下标],如果下标有跨度的话(比如第一组控件下标是0,第二组下标是2),那么SpringMVC里其实的是0到2三个对象的,默认下标是1的那个对象全为null值。 3、重复模块需基本一致

第4种方法:将表单对象序列化成Json字符串提交,以List接收

<form  method="post">
    ID:<input type="text" name="id"><br/>
    Username:<input type="text" name="name"><br/>
    Password:<input type="text" name="pwd"><br/>
    jsonStr : <input type="text" name="pwd" value="['{\\"aa\\":123}','{\\"aa\\":123}']"><br/>

</form>
<form  method="post">
    ID:<input type="text" name="id"><br/>
    Username:<input type="text" name="name"><br/>
    Password:<input type="text" name="pwd"><br/>
    jsonStr : <input type="text" name="pwd" value="['{\\"aa\\":123}','{\\"aa\\":123}']"><br/>
</form>

JS 代码

    //form表当序列化json
    $.fn.serializeObject = function () {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function () {
            if (o[this.name]) {
                o[this.name] = o[this.name] + "$" + this.value;
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };
    function commit(){
        var arr = [];
        $("form").each(function () {
            arr.push($(this).serializeObject());
        })

       $.ajax({
            type: "post",
            url: "",
            dataType: "json",
            contentType: "application/json",
            data: JSON.stringify(arr),
            success: function (result) {
            },
            error: function () {
                alert("error")
            }
        });
    }

    @RequestMapping(value = "/saveGiftBagAndAward")
    @ResponseBody
    public Result saveGiftBagAndAward(@RequestBody List<User> users, Model model){
    }

优点 1、外面无需报一层 2、如果传递json字符串数组代码灵活

缺点 : 1、存入一些总览信息不好存入 例如 用户的 籍贯 等信息。

总结 : 还是第二种方式优雅 灵活 兼容性高

results for ""

    No results matching ""