Spring POST请求:来自模板的响应

时间:2018-03-21 11:10:29

标签: java spring templates spring-boot thymeleaf

这里的问题是我不知道怎么说应该从哪个变量中保存模板中的信息

控制器方法:

@PostMapping("/users/register")
public String register(UserCreateRequestModel viewModel, Model model){
    if (this.userService.register(viewModel.getUsername(), viewModel.getPassword())){
        return "redirect:/";
    }
    model.addAttribute("viewModel", viewModel);
    return "users/register";
}

模板:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="en">
<head>
    <meta charset="UTF-8">
    <title>Register</title>
</head>
<body>
<h1>Register here</h1>
<form th:object="${viewModel}" method="post">
    Username: <input th:field="*{username}" name="username" type="text"     /></br>
    Password: <input th:field="*{password}" type="password" /></br>
    <input type="submit" value="Register" />
</form>
</body>
</html>

此代码正常运行,但我无法理解如何说我希望输入字段中的信息在UserCreateRequestModel中填充。这段代码对我来说太神奇了。我正在寻找一个注释但却无法找到它。

1 个答案:

答案 0 :(得分:0)

解决方案是使用@ModelAttribute(&#34; viewModel&#34;)。它获取所有viewModel字段。

@PostMapping("/users/register")
public String register(@ModelAttribute("viewModel") UserCreateRequestModel viewModel, Model model){
    //System.out.println(viewModel.getUsername());
    //System.out.println(1111);
    if (this.userService.register(viewModel.getUsername(), viewModel.getPassword())){
        return "redirect:/";
    }
    model.addAttribute("viewModel", viewModel);
    return "users/register";
}