Окей, уже могу.
Значит так, у тебя есть метод для регистрации в контроллере, примерно такой:
@PostMapping("/registration")
public String processRegistration(@Valid @ModelAttribute("user") UserDTO userDto, Errors errors) { }
Внутри метода делаешь проверку, у меня она такая:
if (errors.hasErrors()) {
return "registration";
}
UserDTO - это POJO пользователя, у него есть поля по типу пароля и емейла.
Аннотация Valid означает, что все валидаторы прошли по обьекту успешно. Внутри обьекта пользователя у меня есть поле:
@UniqueEmail(message = "There is already user with such email! Please, choose another one.")
private String email;
Аннотация запускает валидатор, тот, с помощью сервиса, обращается в базу данных и проверяет, нет ли там уже такого адреса, вот метод валидатора:
public boolean isValid(String email, ConstraintValidatorContext constraintValidatorContext) {
return email != null && userService.getByEmail(email) == null;
}
С беком вроде всё. Алгоритм такой:
В метод processRegistration приходит класс пользователя, проверяется на валидность с помощью валидаторов и если есть проблемы, то возвращается форма. А в форме вот такие теги:
<small><form:errors path="password" class="errors"/></small>
И всё.