상세 컨텐츠

본문 제목

7) Validation Spring bean 인식 문제

Today's Study/Error Note

by Hello-Melo 2022. 6. 15. 16:39

본문

22.06.15

 

 - Spring Validation 으로 이메일 중복 검사를 하는 중, Validation 클래스에서 Mapper 인터페이스를 인식을 못해서 계속 NullPointException이 떳다.

 - 이리저리 시도 해 본 결과 Validation이 Spring Bean을 인식을 못하는 것!!

 - 클래스에 component를 어노테이션해주면서 Spring Bean을 인식시켜 주면 해결!!!!

package com.hoon.validation;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import com.hoon.mapper.MemberMapper;
import com.hoon.model.Member;

@Component
public class MemberValidator implements Validator {

	@Autowired
	MemberMapper mapper;
	
	@Override
	public boolean supports(Class<?> clazz) {
		return Member.class.isAssignableFrom(clazz);
	}

	@Override
	public void validate(Object target, Errors errors) {
		//다운캐스팅! object가 상위! 
		Member member = (Member) target;
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "userName", "required");
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "email", "required");
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "required");
		System.out.println(mapper);
		System.out.println(member.getEmail());
		if(mapper.findByEmail(member.getEmail()) != null) {
			errors.rejectValue("email", "checkEmail");
			return;
		}
	}
}

 - 위 코드처럼 클래스에 @Component 한줄만 추가했는데 깔끔하게 해결!

 - null이 터질때는 println으로 콘솔에서 데이터가 붙러와 지는 지 우선 확인 하고! 불러 와지는 경우에는

   화면단으로 이동할 때 문제가 있는지를 체크 하고, 콘솔 창에도 데이터를 불러오지 못한다면 연결 과정을

   체크하는 순서로 오류를 해결해나가면 된다!

   

 - 까르끔하게 해결! 이미 존재하는 이메일이라고 자알~ 뜬다!

관련글 더보기

댓글 영역