为什么当我在调用ajax中返回一个ModelAndView时它会工作并正常显示jsp页面,但是当我将它返回到带有其他对象的地图时,它就不起作用。
第一个工作的案例:
@RequestMapping(value="/searchlostcard")
public @ResponseBody
ModelAndView searchlostcard() {
[...]
return new ModelAndView("search/results","cardlist", listlostcard); ;
}
我的ajax电话
[...]
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 ;
}
我的ajax电话
[...]
success : function(responce) {
$('#page_grid').html(responce['vue']);
}
答案 0 :(得分:3)
当您返回ModelAndView
时,无论@ResponseBody
注释如何,Spring MVC 都会呈现视图并返回呈现的视图。这是HTML(假设您的视图是HTML)返回给客户端。
当您返回Map
并且具有@ResponseBody
注释时,Spring会返回序列化对象(例如,表示地图的JSON字符串)。在这种情况下,不会呈现MaV
变量引用的视图。也就是说,您没有将任何HTML返回给客户端。
答案 1 :(得分:0)
你显然不理解@ResponseBody
的概念。它不会触发JSP(或其他视图技术),但会返回Object本身,呈现为JSON,XML或为其设置的任何内容协商。
您可以尝试删除注释,看看它是否有效。