제약 순서 및 그룹 순서를 사용하여 유효성 검사 순서를 정의 할 수 있습니다. JSR-303 상기 (. 일부 3.5 유효성 루틴은)
그룹 시퀀스로 정렬되지 않는
그룹 없이 특정 순서로 검증 될 수있다. 이는 유효성 검사 루틴이 동일한 패스의 여러 그룹에 대해 으로 실행될 수 있음을 의미합니다. 최대 절전 모드 검사기 documentation으로
는 말한다 :
그냥 그룹이 순서 를 정의 에게 인터페이스를 정의하고 @GroupSequence로 주석을 필요로 이러한 검증 순서를 구현하기 위해
유효성을 검사합니다 (그룹 정의 시퀀스 참조). 시퀀스 그룹에서 적어도 하나의 제약 조건이 실패하면 시퀀스에서 다음 그룹의 제약 조건 중 의 유효성을 검사하지 않습니다. 제약 특별한 순서없이 평가로 그들이 (Default
그룹에 속하는 그룹에 관계없이, 다음
public interface CheckItFirst {}
public interface ThenCheckIt {}
public class FormModel {
@NotBlank
private String name;
@NotNull(groups = CheckItFirst.class)
@ImageSizeConstraint(groups = ThenCheckIt.class)
private MultipartFile image;
}
그리고 첫째
, 당신은 제약 그룹을 정의하고 제약에 적용해야 너무), image
필드 제약 그룹에 대해 @GroupSequence을 만들어야합니다.
@GroupSequence({ CheckItFirst.class, ThenCheckIt.class })
public interface OrderedChecks {}
당신은 당신이 메소드 레벨의 검증을 위해 검증 그룹을 지정할 수는 @Validated 주석을 사용할 수 있습니다, 스프링 MVC 컨트롤러 방법이 검증을 적용하려면
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<FormModel>> constraintViolations =
validator.validate(formModel, OrderedChecks.class);
그것을 테스트 할 수
@PostMapping(value = "/processFormModel")
public String processFormModel(@Validated(OrderedChecks.class) FormModel formModel) {
<...>
}
사용자 정의 제약 조건에서 ** NotNull **을 코딩하는 것은 어떻습니까? –
가능하지만 관심사를 구분하고 싶습니다. –