본문 바로가기

Spring 정리/Spring MVC 5

Validator 커스터마이징

728x90
반응형

JS-303, JS-380 2가지의 경우에 유효성 검사하는 코드를 알아보았다. Validator를 본인이 직접 만들어 사용 할 수 있다.

 

JS 사용 대신 추가해 주어야 할 부분은 다음과 같다.

 

1. Validator를 implements한 클래스 구현하기

2. 1번의 객체를 TestController.java에 @initBinder 구현한 함수에 바인딩하기

 

1. TestController에 initBinder 함수 추가하기

<TestController.java>

@InitBinder
public void initBinder(WebDataBinder binder) {
DataBean1Validator validator1 = new DataBean1Validator();
//binder.setValidator(validator1);
binder.addValidators(validator1);
}

Binder를 통해 새로운 유효성을 정의한 DataBean1Validator 클래스 객체인 validator1을 binder에 추가한다.

 

 

 

2. 새로운 클래스에 유효성 등록하기

 

public class DataBean1Validator implements Validator{

	@Override
	public boolean supports(Class<?> clazz) {
		// TODO Auto-generated method stub
		return DataBean1.class.isAssignableFrom(clazz);
	}

	@Override
	public void validate(Object target, Errors errors) {
		// TODO Auto-generated method stub
		
		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("data2", "error5");
		}
	}

}

Validator 인터페이스를 implements하면, 2개의 method를 구현해야한다.

supports 메서드는 DataBean1 클래스를 할당한다.

validate 메서드에 유효성을 체크 할 클래스를 정의하고 변수를 설정한다.

 

validate의 파라미터 첫번째인 target은 내가 조사하고 싶은 Class와 객체를 참조하도록 한다.

 

1. ValidationUtils( 지정된 값을 유효성 검사한다.)

 

rejectIfEmpty는 data2에 대해 조사하며, Empty일 경우 오류 "error2"를 나타낸다.

rejectIfEmptyOrWhitespace는 data3에 대해 조사하며 공백을 제거하고나서도 Empty일 경우 "error3"을 낸다.

 

2. rejectValue(사용자가 직접 유효성을 검사한다.)

if문 검사에 따라서, 조건에 부합하는 경우 erros.rejectValue를 통해 프로퍼티명에 코드가 추가된다.

 

728x90
반응형

'Spring 정리 > Spring MVC 5' 카테고리의 다른 글

예외처리  (0) 2020.05.27
Interceptor  (0) 2020.05.27
JSR-303 / JSR-383  (0) 2020.05.27
에러 메시지 커스터마이징  (0) 2020.05.27
유효성 검사  (0) 2020.05.27