概述
简单对象数据绑定
/**
* 单一对象数据绑定
* @param user
* @return
* http://localhost:8080/getUser.do?name=Tom&age=12
*/
@RequestMapping("/getUser.do")
@ResponseBody
public String getObject(User user){
return user.toString();
}
/**
* TODO: 实体
**/
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;
}
@Override
public String toString() {
return "User{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
简单对象的数据绑定比较简单,在请求url写上对象的属性即可
多层级对象数据绑定
/**
* 多层级数据对象绑定(People有User的对象)
* @param people
* @return
* http://localhost:8080/getPeople.do?sex=man&user.name=Tom&user.age=12
*/
@RequestMapping("/getPeople.do")
@ResponseBody
public String getPeople(People people){
return people.toString();
}
/**
* TODO: 实体
**/
public class People {
private String sex;
private String address;
private User user;
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "People{" +
"sex='" + sex + ''' +
", address='" + address + ''' +
", user=" + user +
'}';
}
}
注意:第二级以上对象必须加“对象名.”的前缀。
同对象数据绑定
/**
* 同对象数据绑定
* @param user
* @param admin
* @return
*/
@RequestMapping("/getObjects.do")
@ResponseBody
public String getObjects(User user, Admin admin){
return user.toString() + " " + admin.toString();
}
Admin的实体变量与User类的一样。
/**
* TODO: 实体
**/
public class Admin{
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;
}
@Override
public String toString() {
return "Admin{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
同对象数据绑定比较特殊,如果按照以上的方法直接访问,会出现两个对象被赋予了相同参数的情况
解决办法@InitBinder,区分不同的对象
/**
* 同对象数据绑定
* @param user
* @param admin
* @return
* http://localhost:8080/getObjects.do?user.name=Tom&user.age=15&admin.name=Mike&admin.age=19
*/
@RequestMapping("/getObjects.do")
@ResponseBody
public String getObjects(User user, Admin admin){
return user.toString() + " " + admin.toString();
}
/**
* 为了区分同对象的数据绑定,加入@InitBinder注解来标识
* @param webDataBinder
*/
@InitBinder("user")
public void initUser(WebDataBinder webDataBinder){
webDataBinder.setFieldDefaultPrefix("user.");
}
@InitBinder("admin")
public void initAdmin(WebDataBinder webDataBinder){
webDataBinder.setFieldDefaultPrefix("admin.");
}
springMVC数据绑定【一】——基本类型、包装类型、数组绑定
springMVC数据绑定【三】——List、Set和Map绑定
springMVC数据绑定【四】——Json和XML
最后
以上就是典雅烤鸡为你收集整理的springMVC数据绑定【二】——简单对象、多层级对象和同对象数据绑定的全部内容,希望文章能够帮你解决springMVC数据绑定【二】——简单对象、多层级对象和同对象数据绑定所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复