@Valid 사용시
<annotation-driven />
을 사용해서 어노테이션을 설정하고 2개의 패키지를 기본으로 import해야 합니다.
validation-api , hibernate-validator 로 2개의 패키지는 버전 의존성이 있어
org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean 와 같은 에러가 발생 되면
jar파일의 버전을 확인 해야 합니다.
hibernate-validator 5.x = validation-api 1.1.0.Final 과
hibernate-validator 4.x = validation-api 1.0.0.GA 과 동작 하게 됩니다.
hibernate-validator 는 기본적으로 hibernate-core 와 버전을 맞춰 주는 작업 역시 진행 해야 합니다.
@ModelAttribute @Valid DTO_MODEL dtoInfo,
BindingResult bindingResult,
선언 후 dto 변수에
@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=) : 문자열 또는 배열이 지정된 값 사이일 경우 통과 가능
선언을 이용해서 제약을 줄 수 있으며 BindingResult 를 이용해서 단순히 에러 페이지로 이동 시키거나 form태그를 이용해서 jsp페이지에서 에러 메시지를 출력 할 수도 있습니다.
java에서 에러 메시지를 가지고 오고자 하는경우
FieldError fieldError = bindingResult.getFieldError();
fieldError.getDefaultMessage()
메소드를 이용해서 아래와 같이 설정한 메시지를 java단에서 호출도 가능 합니다.
@Size(max=50,message="데이터는 50자미만으로 작성해야 합니다.")
'spring' 카테고리의 다른 글
ajax 전송시 415에러 발생 (0) | 2021.04.30 |
---|---|
spring 다중 DB접속 mapper scan (0) | 2020.09.04 |
aspect bofore 관련 (0) | 2016.07.01 |
sessionFactory annotatedClasses/packagesToScan 방식 (0) | 2015.07.27 |
spring+hsqldb 사용설정 (0) | 2015.07.15 |