Повторное использование модели домена в Hibernate-Validator с Spring Boot - PullRequest
0 голосов
/ 09 ноября 2018

Я изучаю SpringBoot с помощью Hibernate Validator (который содержится в Spring-boot-starter-web), и я хочу знать, как повторно использовать один и тот же домен в других ситуациях, например

User.java

public class User {

    @NotBlank(message = "username could not be empty ")
    private String name;

    @Max(120)
    private int age;

    @Range(min = 8, max = 20)
    private String password;

    @Email
    private String email;
}

и ситуация такова:

Я хочу использовать эту модель домена для входа в систему и регистрации, а также, возможно, и другую, но я сталкиваюсь с некоторыми проблемами.

  1. В ситуации регистрации мне нужно проверить все атрибуты, такие как (имя, возраст, адрес электронной почты, пароль)
  2. Но в ситуации входа в систему мне просто нужно проверить имя и пароль.

Возможно ли это сделать, просто используя тот же домен?И как это сделать?

Спасибо.

1 Ответ

0 голосов
/ 09 ноября 2018

То, что вы хотите посмотреть, это группы проверки . Таким образом, вы можете создавать наборы ограничений для одного и того же компонента, а затем использовать разные группы для проверки в разных ситуациях. В вашем конкретном случае у вас может быть что-то вроде:

публичный класс Пользователь {

@NotBlank(message = "username could not be empty ", groups = {Register.class})
private String name;

@Range(min = 8, max = 20, groups = {Register.class, Login.class})
private String password;

@Email(groups = {Register.class, Login.class})
private String email;

}

и затем, передав Register или Login в качестве группы для проверки, вы будете выполнять проверки только тех ограничений, которые имеют соответствующие группы.

Как передать эти группы весной? Вы должны взглянуть на @Validated аннотацию . У него есть атрибут groups, который можно использовать, чтобы указать, какие группы использовать для проверки. Это будет выглядеть примерно так:

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@Validated( Login.class ) User user) {
    ....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...