Java&Spring

No converter found for return value of type: class java.util.HashMap (Json converter 에러)

ZZJJing 2023. 1. 11. 18:01

새로운 프로젝트에

서비스단에서 만든 Map<String, Object> 를 리턴하려고 하니 

 

No converter found for return value of type: class java.util.HashMap

 

이런 에러가 났다. 

 

검색해보니 

HashMap을 json형태로 변환을 할 수 없기 때문이란다. 

 

검색해보니 pom.xml 에 dependency 추가 해결이 제일 많았다. 

 

그런데 프로젝트를 같이 작업 중이라 pom.xml 건들기가 좀 그래서 

여쭈었더니 ModelAndView 객체 이용해서 하라고 하심! 

 

// 기존 방법 :  Map으로 리턴한다. 
@ResponseBody
@RequestMapping(value = "/test/basic/proc.do", method = RequestMethod.POST)
   public Map<String, Object> proc(HttpServletRequest request) throws Exception {
   
   // 리턴 객체 생성 
   Map<String, Object> rtnObj = new HashMap<String, Object>();
   
   // 중간 서비스 처리 (생략) 
   
   // 리턴 값 넣기 
   rtnObj.put("result",true); 
   return rtnObj;
 }

 

// 모델앤뷰로 변경 
@ResponseBody
@RequestMapping(value = "/test/basic/proc.do", method = RequestMethod.POST)
   public ModelAndView proc(HttpServletRequest request) throws Exception {
      
      // 모델앤뷰 객체 생성 
      ModelAndView mav = new ModelAndView();
      // 맵 리턴 객체 생성 
      Map<String, Object> rtnObj = new HashMap<String, Object>();
      
     
      // 중간 서비스 처리 (생략)
     
      // 리턴 맵 값 넣기 
      rtnObj.put("result",true); 
      // 모델앤뷰에 담기
      mav = new ModelAndView("jsonView", "jsonObj", rtnObj);
      
      return mav;
   }

 

리턴타입만 바꿔주고 모델앤뷰에 담아만 주면 된다.

 

사용자 단 - ajax로는 이렇게 받으면 된다. 

 

$.ajax({       
    type : 'POST'
    , url : "./proc.do"
    , data : {"pidx" : idx, "status" : use_yn} 
    , dataType : 'json'
    , success : function(data){

        if(data.jsonObj.result){
            // 기타 처리 생략 
            console.log("성공");
        }
    }
    , error:function(request,status,error){
        console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
        alert("일시적인 오류가 발생했습니다");
        return false;
    }
});

 

컨버터 에러없이 잘 작동한다!