Spring MVC基本数据绑定
问题内容:
我正在学习Spring
MVC,并且到处都在寻找做一个基本的控制器来查看数据绑定的方法,但是我没有做任何尝试。我可以将视图发布绑定回控制器,并且可以在其中看到带有属性的pojo,但是,每当我尝试将该对象添加到模型中时,我什么也没得到。这是我到目前为止的内容:
控制者
@Controller
public class HomeController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Model model) {
model.addAttribute(new Person());
return "home";
}
@RequestMapping(value="/about", method=RequestMethod.POST)
public void about(Person person, Model model)
{
model.addAttribute("person", person);
}
}
我要绑定的类
public class Person {
private String _firstName;
private String _lastName;
private Date _Birthday;
//Set
public void setFirstName(String FirstName){this._firstName = FirstName; }
public void setLastName(String LastName){this._lastName= LastName; }
public void setBirthDate(Date BirthDate){ this._Birthday = BirthDate;}
//get
public String getFirstName(){return _firstName;}
public String getLastName(){return _lastName;}
public Date getBirthDate(){return _Birthday;}
}
视图-控制器到窗体!工作中
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<html>
</head>
<body>
FirstName: ${model.person.getFirstName}
LastName: ${model.person.getLastName}
</body>
</html>
我该怎么做或需要它进行绑定?
问题答案:
model属性是您在这里缺少的东西。
@Controller
public class HomeController {
@ModelAttribute("person")
public Person getPerson(){
return new Person();
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home() {
return "home";
}
@RequestMapping(value="/about", method=RequestMethod.POST)
public void about(@ModelAttribute("person") Person person, BindingResult result, Model model)
{
if( ! result.hasErrors() ){
// note I haven't compiled this code :)
}
}
}
这个想法是@ModelAttribute方法将在GET和POST上都被调用,在GET请求上,它将只暴露给视图,就像在POST上一样,它将用于绑定请求参数。
请注意,BindingResult
传递给POST方法,因此您可以使用该命令执行某些操作。