복붙노트

[SPRING] ajax spring mvc에서 ModelAndView 리턴하기

SPRING

ajax spring mvc에서 ModelAndView 리턴하기

안녕하세요 봄 mvc + 아약스 사용하고 있습니다. 나는 사용자 아이디를 전달하여 아약스 호출을했다. 모든 것이 성공적으로 Ajax로 반환되지만 HTML 페이지 코드를 보여주는 간단한 응답을 알려줍니다. 이 문제를 해결하도록 도와주세요. 나는 내 아약스를 잘 코딩하지 못했을 것 같은데. 올바른 방법으로 저를 도와주세요.

컨트롤러 코드 :

  public @ResponseBody ModelAndView abc(HttpServletRequest httpServletRequest,
        HttpSession session, ModelMap map){

      ModelAndView modelAndView = new ModelAndView("abcd.page",
                "commandName", object);
           return modelAndView;

Ajax 코드 :

     $(".userDetails").click(function() {
            alert("clicked");
        var userId=$(this).parent().parent(). parent().find(".userId"). 
                       text().trim();
            alert("userId :"+userId);
            $.ajax({

            url : 'ABC.htm',
            type : 'GET',
            data: {userId:userId},
            beforeSend: function(xhr) {  
                xhr.setRequestHeader("Accept", "application/json");  
                xhr.setRequestHeader("Content-Type", "application/json");  
            },  
            success : function(response) {
                alert("success");
                alert(response);
            },
            error : function(res) {
                alert("error");
            },

        });

            return false;
        });

경고 (응답)에 대한 출력; ~이다.

편집 : 아무도 이유를 아약스 성공에 대한 HTML 콘텐츠를주는 말해주십시오 ... 많은 변화 후 나는 같은 경고를 받고했다.

다시 편집 : 나는 컨트롤러에 문제가 없다고 생각합니다. 내 아약스를 올바르게 코딩하는 솔루션을 제안 해주세요. 여기에 오류가있는 것 같습니다. ajax에서 ModelAndView 객체를 얻는 방법

해결법

  1. ==============================

    1.AJAX에서 ModelAndView 객체를 얻지 못한다. Spring은 HandlerMethodReturnValueHandler 인스턴스를 사용하여 핸들러 메소드의 리턴 값을 처리한다. ModelAndView의 경우 ModelAndViewResolverMethodReturnValueHandler를 사용합니다. @ResponseBody의 경우, RequestResponseBodyMethodProcessor를 사용합니다. 이들은 특정 순서로 검사되며 ModelAndView에 대한 우선 순위가 더 높습니다. 따라서 ModelAndView를 반환하면 Spring은 전체 Model에 모델 속성을 추가 한 다음 뷰 이름을 jsp로 해석하고 해당 JSP에서 응답을 작성하여 HTML을 제공합니다. AJAX는 요청에서 응답을 보았으므로 HTML을 보게됩니다.

    AJAX에서 ModelAndView 객체를 얻지 못한다. Spring은 HandlerMethodReturnValueHandler 인스턴스를 사용하여 핸들러 메소드의 리턴 값을 처리한다. ModelAndView의 경우 ModelAndViewResolverMethodReturnValueHandler를 사용합니다. @ResponseBody의 경우, RequestResponseBodyMethodProcessor를 사용합니다. 이들은 특정 순서로 검사되며 ModelAndView에 대한 우선 순위가 더 높습니다. 따라서 ModelAndView를 반환하면 Spring은 전체 Model에 모델 속성을 추가 한 다음 뷰 이름을 jsp로 해석하고 해당 JSP에서 응답을 작성하여 HTML을 제공합니다. AJAX는 요청에서 응답을 보았으므로 HTML을 보게됩니다.

    JSON을 반환하려면 ModelAndView를 반환하거나 모델 객체를 직접 반환하거나 직접 응답에 JSON을 작성하십시오.

  2. from https://stackoverflow.com/questions/19976297/returning-modelandview-in-ajax-spring-mvc by cc-by-sa and MIT license