Я искал использование логической логики с моей проверкой bean-кода с использованием Hibernate Validator в сценариях, где AND'ing ограничений недостаточно. Я обнаружил, что можно изменить это поведение по умолчанию, создав новую аннотацию с аннотацией @ConstraintComposition
как described in the documentation. В документации приведен пример.Hibernate Validator boolean logic
@ConstraintComposition(OR)
@Pattern(regexp = "[a-z]")
@Size(min = 2, max = 3)
@ReportAsSingleViolation
@Target({ METHOD, FIELD })
@Retention(RUNTIME)
@Constraint(validatedBy = { })
public @interface PatternOrSize {
String message() default "{org.hibernate.validator.referenceguide.chapter11." +
"booleancomposition.PatternOrSize.message}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
С помощью этого @PatternOrSize
проверки ограничения означает, что входная строка либо строчные или имеет размер между 2 и 3. Теперь это поднимает несколько вопросов:
- Я верить необходимо создать новую аннотацию для изменения поведения логической логики по умолчанию. Это верно? Если бы можно было определить логическую логику в поле класса, это было бы очень приятно, но это может быть невозможно?
- Можно ли дополнительно настроить логическое поведение логики без создания настраиваемого валидатора, например. определяя
AND
иOR
в то же время? Я не мог найти ничего, что подсказывает, что это возможно, но, возможно, я что-то пропустил. - И самое главное: Можно ли привести аргументы к
@Pattern
и@Size
ограничениям? Потому что в противном случае я предполагаю, что мне нужно будет определить новую аннотацию для каждой комбинации аргументов, которые мне нужны. Определение новой аннотации просто для изменения аргументов до@Size
не представляется возможным, но может быть необходимым?
Благодарим вас заранее.
блестящий ответ, спасибо большое! – Andy0708
@ Gunnar есть способ сделать отдельное сообщение об ошибке для каждого из этих ограничений? Рассмотрим случай: * NotNull NotEmpty *, и я хочу, чтобы NotNull был отделен от NotEmpty. – Eugene