2011-08-11 3 views
2

내가 jQuery를 사용하여 Ajax 요청을,이 다음 봄 컨트롤러를 호출ajax 요청을 사용하여 스프링 컨트롤러에서 뷰를 반환하는 방법은 무엇입니까?

@RequestMapping(value = "/dialogController", method = RequestMethod.POST) 
public String dialogController(Model model, @RequestBody MyClass myclass) { 
    myClass.setTitle("SUCCESS");  
    model.addAttribute("myClass",myClass); 
    return "dialogContent"; //this resolves to dialogContent.jsp 
} 

나는 다음과 같은 오류가 나타납니다 그러나 :

org.springframework.web.HttpRequestMethodNotSupportedException: 
Request method 'POST' not supported 

그리고 여기에 필요한 내가 사용하고 있어요 아약스 호출하는 경우 jQuery를 :

jq.postJSON("/dialogController", myClass, function(data) { 
     myDialog.html(data); 
     myDialog.dialog('open'); 
     //dialog settings previously assigned, 
     //but the success callback function is not reached anyway 
    }); 

편집 나는 같은 오류가 나는 우리의 경우 e :

jq.ajax({ 
    type: 'POST', 
    url: "/dialogController", 
    data:myClass, 
    success: function(data) {    
     previewDialog.html(data); 
     previewDialog.dialog('open'); 
    }); 
+0

가 잘 작동 하는가를 데이터? 또한 dialogController의 실수는 무엇입니까? 또한 자바 스크립트 라이브러리를 사용하고 있습니까? 만약 그렇다면 어느 것입니까? – Ali

+0

@Ali 예는 맞춤법 오류였습니다. 휴식 클라이언트를 사용하지 않았습니까? 봄 컨트롤러에서 오류가 발생하면 차이가 있습니까? 유사한 요청을하지만 json/myclass 매개 변수를 제거하면 같은 오류가 발생합니다. – NimChimpsky

+0

@RequestMapping 주석에 Accept = "text/html, application/json"을 추가하려고 시도한 적이 있습니까? RestClient를 추천하는 이유는 전달 된 "수락"값이 무엇인지 알 수 있기 때문에 오류가 계속 발생하는지 확인하기 위해 변경할 수 있기 때문입니다. – Ali

답변

2

가정의 시청자를 위해 ... 문제는 컨트롤러에서 정의 된 메서드 서명이 ajax 호출과 일치하지 않기 때문인 것으로 나타났습니다. 컨트롤러 메서드에서 Model model 매개 변수를 제거했습니다. 나는 또한 새로운 모델과 시각을 돌려 주어야한다는 것을 깨달았습니다. 여기에 작업 코드는 다음과 같습니다

var myJSON = {"title":"help"}; 
myJSON = JSON.stringify(myJSON); 

<c:url var="postAndView" value="/PostJSONMAV" /> 
... 
jQuery.ajax({ 
    type: 'POST', 
    url: "${postAndView}", 
    data:myJSON, 
    contentType: "application/json", 
    success: function(data) {   
     previewDialog.html(data); 
     previewDialog.dialog('open'); 
    } 
}); 

내가 AJAX 호출로 변경하지만 jQuery.postJSON() 아마 aswell 작동합니다. 그리고 다음과 같이 corrrectly 모델링하는 새로운 객체를 추가하고 대화 상자에 열립니다 JSP 페이지, 반환 새로운 컨트롤러 코드입니다 : 당신은 JSON을 게시 휴식 클라이언트를 사용하는 경우

@RequestMapping(value = "/PostJSONMAV", method = RequestMethod.POST) 
public ModelAndView postJSON(@RequestBody MyClass myClass) { 
    ModelAndView mav = new ModelAndView(); 
    myClass.setTitle("SUCCESS"); 
    mav.setViewName("dialogContent"); 
    mav.addObject("myClass", myClass); 
    return mav;  
} 
관련 문제