회원가입시 유효성 검사 기능을 추가하다가 생긴 오류로 인해서 한참을 묶여 있었다......

 

 

 

MemberController.java

 

JoinForm.jsp

 

joinMember라는 이름으로 jsp로 넘겨주었다. 넘겨줄 때, ModelAttribute를 이용하여 이름을 지정해준것이다. 그 이름으로 joinForm에서 form커스텀태그의 속성에 modelAttribute를 이용해서 받아주었다. 

빈의 형식은 MemberVO이기 때문에 joinForm에서 MemberVO의 프로퍼티와 똑같이 action으로 넘겨주면 @Valid어노테이션이 붙어있는 빈을 유효성검사 하게 된다.

 

그런데...

 

이대로 실행하면 자꾸 에러가 났다.

 

 

 

 

db.classname을 못찾는다?

 

 

ServletAppContext.java

 

db.properties에 디비접속정보를 담아서 위와 같이 @Value를 사용하여 변수에 주입받아서 사용했는데 이 부분이 에러가 난다. 분명 유효성검사 기능을 추가하기 전에는 나지 않았던 에러.

 

 

구글링해보니, @ProperySource로 등록하여 @Value를 하고, 또다른 properties파일을 메세지로 등록을 하게 되면 두 파일이 충돌이 나서 모두 인식하지 못하는 오류가 발생한다고 한다.

 

 

 

ServletAppContext.java파일에 PropertySourcePlaceholderConfigurer 라는 빈을 추가해주면 PropertySource에 등록한 properties를 따로 관리하기 때문에 충돌이 발생하지 않는다!!

 

 

PropertySourcePlaceholderConfigurer를 추가해주는 과정에서도 계속 오류가 나서 여기서만 한 3시간 고생했다.......

원인은........... 메소드 이름 자동완성..... 오타였다..

자동완성으로 PropertySourcePlaceholderConfigurer 클래스가 메소드 이름으로 완성되어서 만들어져 버림... 이걸 계속 찾지 못하였다.. 

 

 

 

 

 

암튼 오류 해결이긴한데, 

 

같은 빈으로 다른 valid후 error message를 출력하려고 하면 출력이 안된다.

그러니까 회원가입은 되는데 로그인은 <form:errors>로 출력이 안된다........ 추후에 해결해 보아야겠다.

+ Recent posts