본문 바로가기
Spring

Spring Framework : Spring Security @Valid

by autumnly 2017. 6. 9.


@Valid 어노테이션을 사용하면 데이터의 유효성 검사를 매우 쉽게 할 수 있다.


보통 데이터 검증을 프레젠테이션 계층에서 하거나, 서비스 계층에서 하는 방식을 택한다.

하지만 @Valid는 원천적으로 등록 오류를 피하기 위해 객체 자체에 검증모델을 주입하는 방식을 채택하고 있다.


해당 데이터 객체(DTO 또는 VO) 클래스에 원하는 검증 어노테이션을 작성하고

컨트롤러에서 해당 객체 파라미터 앞에 @Valid 어노테이션을 붙이면 끝이다.



@Valid에는 기본적으로 14개의 검증 어노테이션을 제공한다.

@AssertFalse : false 값만 통과 가능
@AssertTrue : true 값만 통과 가능
@DecimalMax(value=) : 지정된 값 이하의 실수만 통과 가능
@DecimalMin(value=) : 지정된 값 이상의 실수만 통과 가능
@Digits(integer=,fraction=) : 대상 수가 지정된 정수와 소수 자리수보다 적을 경우 통과 가능
@Future : 대상 날짜가 현재보다 미래일 경우만 통과 가능
@Past : 대상 날짜가 현재보다 과거일 경우만 통과 가능
@Max(value) : 지정된 값보다 아래일 경우만 통과 가능
@Min(value) : 지정된 값보다 이상일 경우만 통과 가능
@NotNull : null 값이 아닐 경우만 통과 가능
@Null : null일 겨우만 통과 가능
@Pattern(regex=, flag=) : 해당 정규식을 만족할 경우만 통과 가능
@Size(min=, max=) : 문자열 또는 배열이 지정된 값 사이일 경우 통과 가능
@Valid : 대상 객체의 확인 조건을 만족할 경우 통과 가능


기본 객체는 대부분의 경우 위의 14가지 어노테이션으로도 통과가 가능하겠지만 생성객체나 좀 더 엄격한 규칙을 위해서는 직접 검증 어노테이션을 구현할 수도 있다.


<form:errors>는 컨트롤러에서 전달받은 에러 객체를 컨트롤하는 역할을 담당하는데 현재 별도의 에러 메시지 설정이 없으므로 기본 에러가 표시된다. 만약 에러메시지를 바꾸고 싶다면 도메인 객체에 삽입한 검증 모델에 message라는 값을 더해주면 된다.

@Size(min=5, max=50, message="5자에서 50자 사이의 값만 가능합니다") private String id;




참고 : http://egloos.zum.com/springmvc/v/509029