У меня есть пользовательские проверки, которые я хочу запустить после всех проверок по умолчанию. Я знаю, что нам просто нужно указать групповую последовательность в аннотации @Validated, когда мы хотим, чтобы объект был проверен на самом контроллере, но я хочу явно выполнить проверки.
Set<ConstraintViolation<Listing>> violations = Validation.buildDefaultValidatorFactory().getValidator().validate(listing);
if (CollectionUtils.isNotEmpty(violations))
violations.stream().forEach(violation -> errorList.add(violation.getMessage()));
Я не могу понять, как указать, что мы хотим использовать эту групповую последовательность (ListingConstraintGroupSequence.class).
@ListingAdditionalPropertiesConstraint(groups =
ListingCustomValidationGroup.class,
additionalProperties = "additionalProperties"
)
@ListingInventoryLocationsConstraint(groups = ListingCustomValidationGroup.class,
listingInventoryLocations = "listingInventoryLocations"
)
@ListingConditionalFieldsConstraint.List({
@ListingConditionalFieldsConstraint(groups = ListingCustomValidationGroup.class,
message = "maxLimitPerUser cannot be 0 when limited is true",
booleanFlag = "limited",
field = "maxLimitPerUser"
),
@ListingConditionalFieldsConstraint(groups = ListingCustomValidationGroup.class,
message = "maxDaystoReturn cannot be 0 when willAcceptReturns is true",
booleanFlag = "willAcceptReturns",
field = "maxDaystoReturn"
)
})
@EqualsAndHashCode
@Getter
@Setter
@ToString
public class Listing implements Serializable {
//Ensures that Custom Validators are run only if the default validations pass
@GroupSequence({Default.class,ListingCustomValidationGroup.class})
public interface ListingConstraintGroupSequence {}
.
.
. }
Заданный вопрос: Последовательность групп проверки бинов не работает