嵌套 java 类的 Thymeleaf 验证

问题描述 投票:0回答:1

我的 spring MVC Thymeleaf 应用程序中有两个实体(java 类),用户和地址。 User 类包含 Address 类的一个字段并引用它。 我有一个 Thymeleaf 表单,其中包含用于接收用户和地址实体数据的输入元素。 当我想在提交时验证表单时,不会发生错误,也不会验证地址实体的字段。但是用户实体的验证和显示错误工作正常。

用户和地址实体:

@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {
    private String id;
    @NotEmpty("Enter first name")
    private String firstName;
    @NotEmpty("Enter last name")
    private String lastName;
    private Address address;
}
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Address {
    private String id;
    @NotEmpty("Enter the city")
    private String City;
    private String Street;
}

Spring MVC 控制器:

@GetMapping("/getUserForm")
public String getUserForm(Model model)
{
  User user= new User();
  model.addAttribute("user", user);
  
  return "userForm";
}

@PostMapping("/saveUser")
public String saveUser(@Valid @ModelAttribute("user") User user, BindingResult result, Model model)
{
  if(result.hasErrors()) {
            System.out.println("errrrrrrrrrrrrrrrrrrrrrr");
            return "userForm";
        }
}

百里香叶形式:

<form th:method="post" th:action="@{/saveUser}" th:object="${user}" >

  <input type="text" th:field="*{firstName}"/>
  <p th:if="${#fields.hasErrors('firstName')}" th:errors="*{firstName}" />

  <input type="text" th:field="*{lastName}"/>
  <p th:if="${#fields.hasErrors('lastName')}" th:errors="*{lastName}" />

  <input type="text" th:field="*{address.city}"/>
  <p th:if="${#fields.hasErrors('address.city')}" th:errors="*{address.city}" />

  <button type="submit">Save</button>
   
</form>

预先感谢您的帮助。

validation spring-mvc thymeleaf spring-thymeleaf
1个回答
0
投票

您需要在提交的地址上标注@Valid。 它适用于嵌套类。

© www.soinside.com 2019 - 2024. All rights reserved.