Проверка JSR303: два (или более) ограничения проверки: после того, как первый вернул ошибку, не оценивать второй? - PullRequest
2 голосов
/ 30 января 2012

при следующих двух ограничениях

@NotNull
@Pattern (pattern="foobar")
private String myFooBarMember;

Есть ли возможность, если первое совпадало (= вернуло ошибку) (@NotNull), чтобы не вычислять второе (@Pattern)?или JSR303 всегда оценивает все ограничения?Если есть возможность не оценить второй после первого матча, укажите, как это можно сделать.

Большое спасибо!

1 Ответ

2 голосов
/ 30 января 2012

Ну, я не специалист по JSR 303, но я нашел следующие выдержки из 1.0 FR :

2.3.Композиция ограничений

Примечание:

В случае сбоя составного ограничения и если составное ограничение помечено как @ReportAsSingleViolation, поставщик Bean Validation может не обрабатывать другие ограничения составления дляэто составленное ограничение.

и:

3.5.Процедура проверки

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

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

Из первого я бы сказал, что это (составление ограничений) будет одним из способов достижения того, что вы хотите.Хотя это может (и, вероятно, зависит) от разработчика Bean Validation, вам нужно прочитать некоторые проприетарные документы.

...