springMVC中使用List和Map绑定对象作为参数的使用方法

来源:互联网 发布:打字平台赚钱软件 编辑:程序博客网 时间:2024/05/17 09:11

自从出现了spring MVC,回头再来看看,觉得struts真的是巨复杂,今天讨论的不是两者的异同,而是纯粹的写一个spring MVC绑定Map参数的问题。

相信玩过spring MVC的小伙伴肯定都尝试过,普通Object、String、String[]等基本类型的绑定方式了吧,下面我们介绍下List、Map需要绑定在对象上作为参数的使用。

话不多说,直接看代码:

List需要绑定在对象上,而不能直接写在Controller方法的参数中。

// model代码public class User {    private String firstName;    private String lastName;    public String getFirstName() {        return firstName;    }    public void setFirstName(String firstName) {        this.firstName = firstName;    }    public String getLastName() {        return lastName;    }    public void setLastName(String lastName) {        this.lastName = lastName;    }}public class UserListForm {    private List<User> users;    public List<User> getUsers() {        return users;    }    public void setUsers(List<User> users) {        this.users = users;    }}// controller代码@RequestMapping("saysth.do")public void test(UserListForm userForm) {    for (User user : userForm.getUsers()) {        System.out.println(user.getFirstName() + " - " + user.getLastName());    }}
<!-- html代码 --><form action="saysth.do" method="post"><input name="firstName" value="张" /><br><input name="lastName" value="三" /><br><input name="contactInfo.tel" value="13809908909" /><br><input name="contactInfo.address" value="北京海淀" /><br><input type="submit" value="Save" /></form>

Map的实现跟List的大惊相同,但还是贴一下代码

Map最为灵活,它也需要绑定在对象上,而不能直接写在Controller方法的参数中。

// model代码public class User {    private String firstName;    private String lastName;    public String getFirstName() {        return firstName;    }    public void setFirstName(String firstName) {        this.firstName = firstName;    }    public String getLastName() {        return lastName;    }    public void setLastName(String lastName) {        this.lastName = lastName;    }}public class UserMapForm {    private Map<String, User> users;    public Map<String, User> getUsers() {        return users;    }    public void setUsers(Map<String, User> users) {        this.users = users;    }}// controller代码@RequestMapping("saysth.do")public void test(UserMapForm userForm) {    for (Map.Entry<String, User> entry : userForm.getUsers().entrySet()) {        System.out.println(entry.getKey() + ": " + entry.getValue().getFirstName() + " - " +        entry.getValue().getLastName());    }}
<!-- html代码 --><form action="saysth.do" method="post"><table><thead><tr><th>First Name</th><th>Last Name</th></tr></thead><tfoot><tr><td colspan="2"><input type="submit" value="Save" /></td></tr></tfoot><tbody><tr><td><input name="users['x'].firstName" value="aaa" /></td><td><input name="users['x'].lastName" value="bbb" /></td></tr><tr><td><input name="users['y'].firstName" value="ccc" /></td><td><input name="users['y'].lastName" value="ddd" /></td></tr><tr><td><input name="users['z'].firstName" value="eee" /></td><td><input name="users['z'].lastName" value="fff" /></td></tr></tbody></table></form><!-- 这里的x/y/z都是map的key -->
1 0
原创粉丝点击