java—spring如何将对象从视图填充到控制器?

o2rvlv0m  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(293)

有人能解释一下spring是如何从视图中的窗体填充对象的吗?
看看我的例子
人员类别:

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

表单.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>

显示窗体.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} 窗体的窗体属性?

gcuhipw9

gcuhipw91#

在SpringWebMVC中, DispatcherServlet 类充当前端控制器。它负责管理springmvc应用程序的流程。
整个流程如下所示-
第一个请求将由 DispatcherServlet . DispatcherServlet 会得到 HandlerMapping 并了解与给定请求关联的控制器类名。
现在请求转移到控制器,然后控制器将通过执行适当的方法和返回来处理请求 ModelAndView 对象(包含模型数据和视图名称)返回到 DispatcherServlet . DispatcherServlet 将模型对象发送到 ViewResolver 以获取实际视图页。
最后一步 DispatcherServlet 将通过 Model object 以显示结果。

相关问题