22.06.16 15:00 목요일 현재...;;
검증기능이 제대로 동작하지 않는다.
가령 컨트롤러 데이터 바인딩 할 때 DTO 필드의 검증 순서가
null, 유효 범위, 100원단위 순의 체크가 정상 동작이라면 그렇지 않다는 것을 확인했다.
다행히 구글링을 통해서 'Bean Validation' 우선순위를 정할 수 있는 방법을 찾았고 그것을 적용해 보려한다.
해결!!!
아래와 같이 인터페이스를 담은 ValidationGroups class와
public class ValidationGroups {
public interface NotNullGroup {}
public interface NotBlankGroup {}
public interface RangeGroup {}
public interface UnitGroup {}
}
각 인터페이스의 순서를 매긴 GroupSequence 어노테이션을 적용한 ValidationSequence 인터페이스를 만든다.
@GroupSequence({NotNullGroup.class, NotBlankGroup.class, RangeGroup.class, UnitGroup.class})
public interface ValidationSequence {
}
Bean Validation을 적용한 DTO에 groups를 우선 순위를 적용한 ValidationGroups의 인터페이스로 설정하고 이러한 DTO를 파라미터 바인딩하는 곳에 @Validated 추가 후 'ValidationSequence.class' 를 넣어준다. @Validated(ValidationSequence.class) 요렇게~!
참고로 내 프로젝트는 @RequestBody를 통해 넘어오는 데이터가 객체이며 그 객체 안에 List를 받아 오는 형식의 파라미터 바인딩이라 해당 DTO 안에 List 객체에도 @Valid 어노테이션을 선언해 주었다.