지난 번 잠시 언급한 적이 있지만 현재 Spring 3.1.1 + MyBatis + jQuery + Bootstrap을 이용하여

업무에 사용할 작은 사이트를 만들고 있다.


기업체의 내부망에서 작업하는 중이라 소스를 공개하지 못하는 것이 못내 아쉽다.


사실 Spring을 다시 만져보는 것이 거의 7년만이라 약간의 낯설음은 있지만 그 낯설음을 상쇄할만한

변화가 있었기에 어렵지 않게 다시 시작해 볼 수 있었다.


그래도 어디 세상 일이 밥 달라면 밥 나오고 물 달라면 물 나오던가?

이래 저래 소소한 에러들을 자주 접하게 된다. 그리고 언제나 그렇듯 아무 것도 아닌 문제로

반나절을 그냥 날리기도 하고...


어차피 전문적인 내용이야 볼 수 있는 곳이 천지니 나는 내가 겪은 에러나 정리하련다.


1. Mapped Statemets collection already contains value for...

톰캣을 기동하는데 이런 메시지가 나오면서 디플로이가 제대로 안되었다.

얼핏 메시지 내용을 봐서는 어딘가 중복된 설정이 있거나 id명을 중복해서 썼거나 했을 것 같았는데...

나같은 경우 특정 Mapper의 Query문에 문제가 있었다.

갑자기 기억이...쿼리 자체의 오류였다기보다는 MyBatis 쿼리 설정 상의 문제였던가? 

하여간 이런 오류 만나면 Mapper에 있는 쿼리도 잘 살펴야 한다.


2. requestmappinghandlermapping did not find handler method for

요건 메시지 내용대로 request에 대한 mapping이 잘못되어 요청한 리소스를 찾을 수 없다는 뜻이다.

요런 것이 참 별것도 아니면서 시간 잡아먹는 하마다.

문제의 원인은 Controller에는 request parameter를 userId로 해놓고는 jQuery의 ajax 호출 시

파라미터 명을 userID라고 써서 발생한 문제였다.


3. Invalid bound Statement (not found): Mapper.function

요것도 메시지를 눈여겨 보면 답이 나온다.

문장과 Mapper의 함수가 연결이 안된다잖는가~

바로 Mapper.xml에 있는 쿼리 id와 Mapper.java에 있는 메소드 명이 달라서 발생한 문제다.


4. 건 에러는 아니지만 get방식으로 request할 때 한글 깨지는 문제 처리 방법이다.

클라이언트 측 : jQuery에서 한글로된 인자를 넘길 때 encodeURI(encodeURIComponent(value))로 넘긴다.

서버 측 : Controller에서 한글 인자를 받을 때 URLDecoder.decoded(value)로 처리해준다.


참...적어놓고 보니 초급자 수준의 실수가 날 울리네....ㅠ.ㅠ







블로그 이미지

마즈다

이제 반백이 되었지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^

Tag ,

댓글을 달아 주세요