【问题标题】:Spring POST request: Response from the templateSpring POST 请求:来自模板的响应
【发布时间】:2018-08-30 11:32:25
【问题描述】:

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

控制器方法:

@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 中。这段代码对我来说太神奇了。我正在搜索注释,但找不到。

【问题讨论】:

  • 使用@RequestBody UserCreateRequestModel viewModel
  • 这不起作用
  • 在模板中使用 spring form 标签并提及 modelAttribute=viewModel
  • 我找到了解决方案。是@ModelAttribute,但你提到它是控制器中方法的属性

标签: java spring templates spring-boot thymeleaf


【解决方案1】:

解决方案是使用@ModelAttribute("viewModel")。它正在获取所有 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";
}

【讨论】:

    猜你喜欢
    • 2020-08-04
    • 2012-01-08
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多