您的位置:首页 > 编程语言 > Java开发

Spring MVC 绑定参数

2014-10-20 23:11 405 查看

一、最简单的JavaBean的绑定

假设我们有一个简单的Person类

public class Person {
	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;
	}
}


那么如何通过请求过来的参数绑定到Person对象上呢?

1、首先我们需要将对象暴露到映射方法的参数中

@RequestMapping("/test1")
	public void test1(Person person, HttpServletResponse response)
			throws IOException {
		System.out.println(Utils.parseJson(person));
		sendJson(response, "");
	}


注:Utils.parseJson(..)是我封装了一个转化json的方法,只是为了查看输出

还有一点值得注意的是,这个person对象永远都不为null,若无参数为person的属性赋值,那么person就相当于是一个new Person(),所有属性都是默认值

2、再通过类似如下的请求http://localhost:8080/Mobile/test1?name=zhu&age=10就可以将参数绑定到person对象了

二、绑定到简单数组

@RequestMapping("/test1")
	public void test1(String[] ids, HttpServletResponse response)
			throws IOException {
		System.out.println(Utils.parseJson(ids));
		sendJson(response, "");
	}

注:若参数中没有ids,那么此ids为null,否则默认根据","自动分隔成数组

比如前台发出如下的请求:http://localhost:8080/Mobile//test1?ids=a,b,c

三、绑定到List

这个绑定和80%的最初想法都不太一样,需要通过一个“辅助类”来实现绑定到List,直接在RequestMapping方法参数中使用List无法绑定(就我所知道的)

下面我们来借助Group这个类绑定一组person对象

public class Group {
	private List<Person> personList;

	public List<Person> getPersonList() {
		return personList;
	}

	public void setPersonList(List<Person> personList) {
		this.personList = personList;
	}

}


此时需要发出的请求格式为http://localhost:8080/Mobile/test1?personList[0].name=zhu&personList[1].name=zhao

四、绑定到Map

也需要使用“辅助类”

public class Group {
	private Map<String, Object> paramMap;

	public Map<String, Object> getParamMap() {
		return paramMap;
	}

	public void setParamMap(Map<String, Object> paramMap) {
		this.paramMap = paramMap;
	}
}


此时需要发出的请求格式为http://localhost:8080/Mobile/test1?paramMap[age]=12¶mMap[name]=zhu

参数需要用paramMap[age]这样的格式,而paramMap.age这样的格式是无法绑定到map的

五、绑定到“富对象”

先解释何谓“富对象”,也就是说对象的属性中还有JavaBean

public class Group {
	private Person leader;
	private List<Person> members;

	public Person getLeader() {
		return leader;
	}

	public void setLeader(Person leader) {
		this.leader = leader;
	}

	public List<Person> getMembers() {
		return members;
	}

	public void setMembers(List<Person> members) {
		this.members = members;
	}

}


我们已经知道如何绑定到members了,那么绑定到leader也很简单

只需要:http://localhost:8080/Mobile/test1?leader.name=zhu&leader.age=20

这里只简单的介绍了一些常见的绑定的用法,若想要真正掌握其中的原理还需要好好研究~比如BeanWrapper和PropertyEditor

自定义Editor来扩展更多参数绑定方式等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: