Spring Boot Validation - Как вернуть только одну ошибку из поля - PullRequest
0 голосов
/ 08 июня 2018

Я хотел бы создать приложение для проверки предоставленных данных пользователем.Вот пример.

Word.java

@Data
class Word {    
    @NotBlank(message = "Please, enter your text")
    @Size(min = 3, message = "Your text is too short")
    @Pattern(regexp = "^[A-Z]+[a-z]+$", message = "Your text is incorrect")
    private String text;
}

Я хочу проверить text поле, и я смотрю, чтобы просмотреть только одну ошибку, например:

для ввода {text: ""}:ожидаемый результат должен быть Please, enter your text,но фактический вывод: Please, enter your text, Your text is too short, Your text is incorrect

для ввода {text: "ab"}ожидаемый результат должен быть Your text is too shortно на самом деле вывод: Your text is too short, Your text is incorrect

Я пытался создать пользовательский валидатор с аннотацией @ReportAsSingleViolation, но изменений не было.

Знаете, как это решить?Спасибо за все ваши ответы.

РЕДАКТИРОВАТЬ Иногда ошибки не в правильном порядке, но я не знаю почему.Например,

для ввода {text: ""}:ожидаемый результат должен быть Please, enter your text,но фактический результат: Your text is incorrect, Your text is too short, Please, enter your text

1 Ответ

0 голосов
/ 08 июня 2018

Вы на правильном пути, но упускаете несколько вещей.После добавления овальных проверок вам необходимо реализовать метод, который принимает ваш объект и проверяет его по овалу.

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

Ниже приведен пример -

public static Set<ConstraintViolation> getOvalViolations(Object obj){

    Validator validator = new Validator();

    Set<ConstraintViolation> violations = new HashSet(validator.validate(obj));

    return violations;
}

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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...