Java Spring MVC 3-为什么@ResponseBody方法呈现JSTLView?
我已经将我的一个方法映射到一个控制器中,通过@ResponseBody返回JSON对象Java Spring MVC 3-为什么@ResponseBody方法呈现JSTLView?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我已经将我的一个方法映射到一个控制器中,通过@ResponseBody返回JSON对象 @RequestMapping("/{module}/get/{docId}") public @ResponseBody Map<String, ? extends Object> get(@PathVariable String module, @PathVariable String docId) { Criteria criteria = new Criteria(
@RequestMapping("/{module}/get/{docId}")
public @ResponseBody Map<String, ? extends Object> get(@PathVariable String module,
@PathVariable String docId) {
Criteria criteria = new Criteria("_id", docId);
return genericDAO.getUniqueEntity(module, true, criteria);
}
@RequestMapping(“/{module}/get/{docId}”)
public@ResponseBody映射get(@PathVariable字符串模块,
@路径变量字符串(docId){
标准=新标准(“\u id”,docId);
返回genericDAO.getUniquentity(模块、true、条件);
}
但是,它将我重定向到JSTLView。比如说,如果{module}是product,{docId}是2,那么在控制台中我发现:
名为“xxx”的DispatcherServlet正在处理[/xxx/product/get/2]的POST请求
在名为“xxx”的DispatcherServlet中呈现视图[org.springframework.web.servlet.view.JstlView:name'product/get/2';URL[/web-INF/views/jsp/product/get/2.jsp]]
怎么会这样呢?在同一控制器中,我有另一种类似于此的方法,但运行良好:
@RequestMapping("/{module}/list")
public @ResponseBody Map<String, ? extends Object> list(@PathVariable String module,
@RequestParam MultiValueMap<String, String> params,
@RequestParam(value = "page", required = false) Integer pageNumber,
@RequestParam(value = "rows", required = false) Integer recordPerPage) {
...
return genericDAO.list(module, criterias, orders, pageNumber, recordPerPage);
}
@RequestMapping(“/{module}/list”)
public@ResponseBody映射列表(@PathVariable字符串模块,
@RequestParam多值映射参数,
@RequestParam(value=“page”,required=false)整数页码,
@RequestParam(value=“rows”,required=false)整数记录(每个页面){
...
返回genericDAO.list(模块、标准、订单、页码、记录每页);
}
上面的do正确返回,为我提供了所需对象的列表。
有人帮我解开这个谜团吗?如果一个控制器方法返回
null
,Spring将其解释为希望框架呈现“默认视图”
我认为,如果该方法是@RequestBody
-注释的,则该逻辑不应应用,但这可能很难实现-例如,它如何处理通常返回XML的方法的空返回
无论如何,要阻止这种情况发生,您需要确保返回一些内容,例如空的
映射
您确定get()
方法返回的是非空值吗?哦。。。斯卡夫曼,你打赌是对的。它返回空值。我从没想过返回null会导致这种情况。但是为什么呢?它不应该返回null作为响应吗?这不是更有意义吗?