🔥 Vamos/Spring

0106 | 스프링의 정석 :: 2-31 (local Validator 실습)

unikue 2023. 1. 7. 00:50

 

 

0104 | 스프링의 정석 :: 2-31 (Validator)

1229 | 스프링의 정석 :: 2-30 (데이터 변환기능) 1228 | 스프링의 정석 :: 2-30 (데이터 변환기능) 데이터의 변환과 검증(1) 1. WebDataBinder : 브라우저를 통해서 요청 받은 값이 실제 객체에 바인딩 될 때

ala-nueva.tistory.com

 

public String save(User user, BindingResult result, Model m) throws Exception{ // 입력값을 모두 담을수 없으므로 User 클래스를 만들어서 private으로 멤버변수 선언 + getter,setter추가
		System.out.println("result="+result);
		System.out.println("user="+user);
		
		//수동검증 Validator객체를 직접 생성하고 validate()를 직접 호출하는 것
		UserValidator userValidator = new UserValidator();
		userValidator.validate(user, result);// BindingResult는 errors 인터페이스의 자손이라 그냥 써도 됨.
@InitBinder
	public void toDate(WebDataBinder binder) {
		ConversionService conversionService=binder.getConversionService();
		System.out.println("conversionService="+conversionService);

		binder.registerCustomEditor(String[].class, "hobby", new StringArrayPropertyEditor("#")); 
		// @InitBinder 붙은곳에 자동검증
		binder.setValidator(new UserValidator()); // userValidator를 webDataBinder의 local Validator로 등록 (local validator는 컨트롤러 내에서만 사용 가능)
	}
    
    // 검증값 앞에다가 @Valid 붙이기.
    public String save(@Valid User user, BindingResult result, Model m) throws Exception{ // 입력값을 모두 담을수 없으므로 User 클래스를 만들어서 private으로 멤버변수 선언 + getter,setter추가
		System.out.println("result="+result);
		System.out.println("user="+user);

 

 

✔ 자동검증에 쓰이는 @Valid는 스프링이 아닌 자바표준애너테이션이므로 maven repo에서 가져다가 추가해야함

👉아래 등록과정을 마치면 애너테이션을 import할 수 있게 된다.

https://mvnrepository.com/ 에서 Validation검색 - Bean Validation - 여기선 2.0.1 final 사용
pom.xml파일에다가 애너테이션 붙여넣기
maven이 변경되었으므로 업데이트
Maven폴더에서 업데이트 확인가능

 

👉 Validator의 검증으로 인해 예외의 경우로 가입시도를 할 경우, 설정해둔대로 registorForm화면이 반환된다.

 

 

 


이 파트 들어서 복잡해지니 로직 깨지고 이해도가 떨어져서 자꾸 진도가 안나간다 ㅠㅠ 처음 보니 어쩔수 없긴 하다만. 한시간짜리 인강을 끊어 듣는 중...