2014-01-09 13 views
1

호출 Ajax에서 ModelAndView를 반환하면 정상적으로 jsp 페이지가 표시되고 다른 개체와지도로 반환하면 작동하지 않습니다.ajax 호출에서 ModelAndView를 반환하는 차이점

첫 번째 경우 어떤 일 :

@RequestMapping(value="/searchlostcard") 
public @ResponseBody 
ModelAndView searchlostcard() {    
    [...] 
return new ModelAndView("search/results","cardlist", listlostcard); ; 
} 

내 아약스 호출

[...] 
success : function(responce) {    
    $('#page_grid').html(responce); 
} 

두 번째 경우 작동하지 않습니다

@RequestMapping(value="/searchlostcard") 
public @ResponseBody 
Map<String, Object> searchlostcard() {   
    [...] 
    ModelAndView MaV = new ModelAndView("search/results","cardlist", listlostcard); 

    Map<String, Object> modelino = new HashMap<String, Object>(); 

    modelino.put("taille", listlostcard.size()); 
    modelino.put("vue", MaV); 

    return modelino ; 

} 

내 아약스 호출

[...] 
success : function(responce) {   
    $('#page_grid').html(responce['vue']); 
} 
,
+0

왜 ModelAndView를 모델 맵에 넣을까요? ModelAndView 객체로 클라이언트가해야 할 일은 무엇입니까? –

+0

모델지도에 넣지 않았습니다.보기에 다른 개체를 보내기 위해지도에 넣었습니다. – Youssef

답변

3

당신이 ModelAndView을 반환 한 후 스프링 MVC 는보기을 렌더링하고 에 관계없이 @ResponseBody 주석의보기 렌더링 것을 반환합니다. HTML (보기가 HTML 인 경우)이 클라이언트로 리턴됩니다. 당신이 Map을 반환하고 @ResponseBody 주석이있을 때 반면

는 Spring은 직렬화 된 객체 (지도를 나타내는 예를 들어, JSON 문자열)을 반환합니다. 이 경우에는 MaV 변수에서 참조하는보기가 렌더링되지 않습니다. 즉, 클라이언트에게 반환 된 HTML이 없습니다.

0

당신은 분명히 @ResponseBody의 개념을 이해하지 못합니다. JSP (또는 다른 뷰 기술)를 트리거하지는 않지만, Object 자체를 반환하거나, JSON, XML 또는 컨텐츠 협상이 설정된 모든 것을 렌더링합니다.

주석을 제거하고 작동하는지 확인할 수 있습니다.

+0

예 제가 주석을 제거하고 ModelAndView 객체를 반환하면 jsp 페이지가 표시되고 json 또는 xml 객체가 반환되므로 ModelAndView가 객체이므로 JSON 객체로 반환됩니다. 왜 내 주제가 작동하고 두 번째가 더럽습니까? – Youssef

관련 문제