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객체이름.변수이름"으로 오류메세지를 저장한다.
'프로그래밍 > 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 |