本文介绍了基本的 Spring MVC 数据绑定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在学习 Spring MVC,我到处寻找只做一个基本控制器来查看数据绑定,但我没有尝试过任何工作.我可以将视图发回控制器,并且可以在那里看到带有属性的 pojo,但是每当我尝试将该对象添加到模型时,我什么也得不到.这是我目前所拥有的:

I'm learning Spring MVC and I've looked everywhere to do just a basic controller to view data binding but nothing I've tried as work. I can bind view posting back to controller and I can see the pojo with properties there, however whenever I tried to add that object to the model I get nothing. Here is what I have so far:

控制器

@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;}
}

视图 - 控制器到表单!工作

View - Controller-to-Form ! Working

<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>

我可以或需要它做什么来绑定它?

What can I or need this to do get it to bind?

推荐答案

模型属性是您在这里缺少的东西.

The model attribute is the thing you are missing here.

@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 上它将用于绑定请求参数.

The idea is that the @ModelAttribute method will be invoked on both the GET and the POST, on the GET request it will just be exposed to the view where as on the POST it will be used to bind the request parameters.

请注意,BindingResult 已传递给 POST 方法,以便您可以使用该命令执行某些操作.

Note that the BindingResult is passed to the POST method, so that you can do something with the command.

这篇关于基本的 Spring MVC 数据绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-11 04:01