반응형
- Spring HashMap 변환 에러 -
ajax를 사용하는 도중에 아래와 같은 에러가 발생하였다.
"No converter found for return value of type: class java.util.HashMap"
"No converter found for return value of type:" 는 HashMap 뿐만아니라 다른것들 역시 발생할 수 있다.
이 에러는 ajax 통신 과정에서 에러에 표시된 (본문에서는 HashMap) 타입이 json으로 변환시키지 못했다는 에러이다.
하지만 아이러니 하게도 국비지원 교육을 받았을 당시 "jackson-core" 라이브러리 하나만으로도 충분히 자동 변환이 되었던 코드인데 다시 해보려니 안되는 현상이였다.
에러가 발생한 코드 현황은 다음과 같다.
- pom.xml
<!-- jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.2</version>
</dependency>
- mineMain.jsp
$("#loginBtn").click(function(){
var loginId = $("#id").val();
var loginPw = $("#pw").val();
$.ajax({
type:"post",
url:"/mLogin",
data:{
id : loginId,
pw : loginPw
},
dataType : "JSON",
success:function(data){
console.log(data);
alert("환영합니다.");
},
error:function(e){
console.log(e);
alert("로그인에 실패하셨습니다.");
}
});
});
- MineTestController.java
@RequestMapping(value = "/mLogin", method = RequestMethod.POST)
public @ResponseBody Map<String,Integer> mLogin(Member member) {
System.out.println("mLoginCall");
Map<String,Integer> rMap = mm.mLogin(member);
return rMap; //map으로 넘겨도 jackson이 자동으로 JSON 타입으로 변환해서 넘겨줌.
//jackson은 gson처럼 객체화필요없음 그냥 @ResponseBody와 같이 사용
}
위 상황에서 jackson 관련 라이브러리를 하나 더 추가하여 해결하였다.
- pom.xml
<!-- jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.2</version>
</dependency>
그냥 두개 다 선언해주고 시작해는게 마음 편하다.
반응형
댓글