728x90

Validator 커스터마이징

JSR-303, JSR-380 스펙으로 유효성 검사를 한 후 추가적으로 다른 유효성 검사를 하고자 할 떄 사용한다.

 

Validator 인터페이스 구현

validator 인터페이스를 구현해야 한다. 따로 validator 패키지와 클래스를 생성한다.

supports : 객체가 유효성 검사가 가능한지 확인한다.

validate : 유효성 검사를 하는 메소드

 

         @Override

         public boolean supports(Class<?> clazz) {

                 

                  return DataBean1.class.isAssignableFrom(clazz);

         }

 

         @Override

         public void validate(Object target, Errors errors) {

 

                  ValidationUtils.rejectIfEmpty(errors, "data2", "error2");

                  ValidationUtils.rejectIfEmptyOrWhitespace(errors, "data3", "error3");

                 

                  DataBean1 bean1 = (DataBean1)target;

                  String data2 = bean1.getData2();

                  String data3 = bean1.getData3();

                 

                  if(data2.length()>10) {

                           errors.rejectValue("data2", "error4");

                  }

                  if(data3.contains("@")==false) {

                           errors.rejectValue("data3", "error5");

                  }

         }

이런식으로 구현한다.

 

Validator를 컨트롤러에 등록

사용할 validator가 하나면 setValidator, 한 개 이상이면 addValidators 메소드를 사용한다.

컨트롤러에 등록한 메소드이다.

@InitBinder

       public void initBinder(WebDataBinder binder) {

             DataBean1Validator validator1 = new DataBean1Validator();

             binder.setValidator(validator1);

       }

 

ValidateUtils

지정된 값에 대해 유효성 검사를 하는 메소드이다

rejectIfEmpty(error 객체, 변수 이름, 코드이름) : 값이 비어있는지 확인한다. 공백을 글자로 친다.

rejectIfEmptyOrWhitespace(error 객체, 변수 이름, 코드이름) : 값이 비어있는지 확인한다.

-> 입력값에 문제가 있으면 error 객체에 오류 정보를 저장한다.

오류 메시지는 "코드이름.bean객체이름.변수이름"으로 구성된다.

 

rejectValue

유효성 조건을 직접 만들어서 검사한다.

If문으로 검사 후 위배시 rejectValue를 통해 오류 정보를 지정한다.

rejectValue(변수이름, 코드이름) -> "코드이름.bean객체이름.변수이름"으로 오류메세지를 저장한다.

728x90

'프로그래밍 > Spring' 카테고리의 다른 글

[Spring] 예외 처리  (0) 2020.04.06
[Spring] Interceptor  (0) 2020.04.04
[Spring] JSR-380 오류들  (0) 2020.04.03
[Spring] JSR-303 오류들  (0) 2020.04.03
[Spring] 에러 메세지 커스터마이징  (0) 2020.04.03

+ Recent posts