Eureka是一个基于Spring Boot的管理后台框架。当使用Eureka Form进行编辑时,需要进行表单验证。可以通过以下示例代码来实现表单验证:
- 创建验证器
在这个例子中,我们创建了一个PersonValidator
类,来验证表单中的Person
对象,通过实现接口Validator<Person>
,将验证器绑定到Person
类上。
@Component
public class PersonValidator implements Validator<Person> {
@Override
public boolean supports(Class<?> clazz) {
return Person.class.equals(clazz);
}
@Override
public void validate(Person person, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "firstName", "field.required");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "lastName", "field.required");
}
}
- 使用验证器
在Eureka Form
中使用验证器,只需要在Controller
中进行注入,并在处理编辑请求时使用validate
方法。
@Controller
@RequestMapping("/person")
public class PersonController {
@Autowired
private PersonRepository personRepository;
@Autowired
private PersonValidator personValidator;
@GetMapping("/edit")
public String editPerson(@RequestParam("id") Long id, Model model) {
Person person = personRepository.findById(id).orElse(null);
model.addAttribute("person", person);
return "person/edit";
}
@PostMapping("/edit")
public String savePerson(@ModelAttribute("person") @Validated Person person, BindingResult bindingResult) {
personValidator.validate(person, bindingResult);
if (bindingResult.hasErrors()) {
return "person/edit";
}
personRepository.save(person);
return "redirect:/person/list";
}
}
在这里,PersonController
使用了@Validated
注解,代表需要进行验证。并且在savePerson
方法中,使用了personValidator.validate(person, bindingResult);
来进行表单验证。如果有错误出现,会将错误信息传入BindingResult
对象中,然后在结果中处理错误信息。
- 处理验证错误信息
在Eureka Form
中,我们可以将验证错误信息添加到表单中,让用户能够看到具体的错误信息。在以下代码中,我们使用了FieldError
类来处理字段错误信息。
<form th:action="@{/person/edit}" th:object="${person}" method="post">
<input type="hidden" th:field="*{id}">
<input type="text" th:field="*