У меня проблема с проверкой некоторых компонентов.
По сути, у меня есть форма, в которой интернет-пользователи могут создать новый профиль, и они должны ввести свое имя пользователя.
Я хочу проверить имя пользователя в отношении:
- Длина
- Шаблон
- Если имя пользователя уже существует
Для пункта 3 я написал свой собственный валидатор @UserExists. Проблема в том, что я не хочу запускать этот валидатор, если какой-либо из первых двух валидаторов выйдет из строя.
Я обнаружил, что использование @GroupSequence в моем валидаторе UserExists делает трюк в отношении последовательности, но JSF все равно будет вызывать мой валидатор, если один из других валидаторов сообщит, что ввод недействителен. Могу ли я как-то проверить, не сработал ли уже один из других валидаторов?
Вот свойство, которое я хотел проверить:
@Size(min = 3, max = 20)
@Pattern(regexp = "[A-Za-z]+[A-Za-z0-9]*")
@UserExists(message = "User already exists")
private String username;
Пользовательский валидатор имеет следующие атрибуты:
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = UserExistsValidator.class)
@GroupSequence({Size.class, Pattern.class})
public @interface UserExists