是否有人向我解释一下spring如何从视图中的表单填充对象?
看一下我的例子
Person类:
public class Person {
private String name;
private String password;
/*
constructors, getters and setters
*/
}
控制器:
@Controller
@RequestMapping("/")
public class HomeController {
@GetMapping
public String showForm() {
return "form";
}
@PostMapping
public String processForm(@ModelAttribute("person") Person person) {
return "displayForm";
}
}
form.html:
<body>
<form method="post">
<label for="name">Name:</label>
<input type="text" name="name">
<label for="password">password:</label>
<input type="text" name="password">
<input type="submit">
</form>
</body>
displayform.html:
<body>
<label for="name">Name:</label>
<span th:text="${person.name}"></span>
<br>
<label for="password">Password:</label>
<span th:text="${person.password}"></span>
</body>
我认为这个例子将返回一个空对象,但它工作。
问题是spring如何填充人没有定义一个th:object=${person}
表单属性的形式?
在Spring Web MVC中,DispatcherServlet
类作为前端控制器。它负责管理spring mvc应用程序的流程。
整个流程如下-
-
第一个请求将被
DispatcherServlet
接收。 -
DispatcherServlet
将在HandlerMapping
的帮助下获取与给定请求相关联的控制器类名。 -
现在请求转移到控制器,然后控制器将通过执行适当的方法处理请求并将
ModelAndView
对象(包含模型数据和视图名称)返回给DispatcherServlet
。 -
DispatcherServlet
将模型对象发送给ViewResolver
以获得实际的视图页面。 -
在最后一步
DispatcherServlet
将传递Model object
到View页面以显示结果。