Spring 컨트롤러 - View 사이의 ajax 데이터 통신 시, 에러
처음에는 View의 ajax에서 컨트롤러로 데이터는 넘어가는걸 확인했었다.
ㅇㅇㅇ.do URL을 제대로 잡아냈고, ajax에서 보내는 JSON 데이터를 올바르게 읽어오는걸 확인했었는데,
컨트롤러의 return 값을 ajax에서 받지 못하고 URL과 함께 404 에러를 뱉어냈다.
@ResponseBody
@RequestMapping(value="/Result.do", method=RequestMethod.POST)
public String Result(Model model, HttpServletRequest request) {
logger.info("Welcome Result {}");
.
.
.
return "test"
}
위의 상태였는데, 도무지 문제가 될만한 코드를 확인하지 못했다.
이상한건, request에서 파라메터로 ajax에서 보낸 값을 잘 받아내고도 404 에러가 났다는거였는데
도무지, 이해가 안되서 그날은 머리를 쥐어뜯으며 작업을 포기했더랬다.
이후, 알아낸 문제는
JACKON 의 부재
였다..... = _=;;
평소 작업 시, 대부분 라이브러리가 완비되어있는 상태다보니, 이런 경우를 생각하지 못했다.
pom.xml에 아래 내용을 추가하여 에러를 해결 할 수 있었다.
<!-- JACKSON -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
그러고나서 이번에는 ajax에서 보낸 값이 컨트롤러에 안찍히는 문제가 발생했다...
이거완전.........
그나마 이번에는 쉽게 잡을 수 있었는데,
ajax 소스에서 dataType과, contentType를 명시해줘서 해결 할 수 있었다.
$.ajax({
url: "/Result.do",
data: senddata,
dataType: "json", //중요
type: "POST",
contentType : 'application/x-www-form-urlencoded; charset=UTF-8', //중요
success : function(data){
alert("성공")
console.log(data);
},
error : function(){
alert("에러")
}
});
오늘의 삽질은 여기까지....ㅎㅎㅎ
이전에 타이젠 웹 프로젝트를 개발하면서
PL님이 javascript만 사용하셨었는데,
가끔 jquery가 쉬워서? 코드를 집어넣으면
"jquery 를 나보다 많이 알면 써도 된다. 이 코드로 인해 에러나면 니가 책임지실?"
이 말에 입도뻥끗 못하고 작성했던 코드를 싹다 javascript로 바꿧던적이 있다.
덕분에 javascript랑 div 다루는건 정말 많이 배웠고,
지금까지도 그 PL님에게는 고맙고 감사하게 생각한다.
요즘은... 필요하면 넣고~ javascript로 코드 길어진다~ 싶으면 jquery로 다 때려넣는다.
javascript가 좋긴한데, 분명 한계는 존재한다고 생각한다.
단적인 예로, 비동기통신....
처음에 javascript로 새창 띄웠다가 데이터 보내고, 닫는 형식으로 개발해놓고 보여줬다가
jquery로 다시 넣었던 기억이 난다.