看一下 Spring 提供的用于处理表单提交的示例: https://github.com/spring-guides/gs-handling-form-submission/tree/main/complete
这是处理表单的 Spring MVC 控制器的基本示例。我们来看看控制器类:
@Controller
public class GreetingController {
@GetMapping("/greeting")
public String greetingForm(Model model) {
model.addAttribute("greeting", new Greeting());
return "greeting";
}
@PostMapping("/greeting")
public String greetingSubmit(@ModelAttribute Greeting greeting, Model model) {
model.addAttribute("greeting", greeting);
return "result";
}
}
因此,用户首先浏览到
GET /greeting
,它返回一个 HTML 表单,然后将其提交到 POST /greeting
。
我的问题是,为什么我们要在
@GetMapping
方法中向模型添加 Greeting 对象?表单是一个空表单,它对这个模型对象没有做任何事情?
在他们的 Github 存储库的文档中解释了这一点:
https://spring.io/guides/gs/serving-web-content
“名称参数的值被添加到模型对象中,最终使其可供视图模板访问。”