我正在尝试映射页面请求以同时返回视图和 JSON对象。为此,我正在使用Jackson JSON提供商
这是我的控制器方法
@RequestMapping(method = RequestMethod.GET, value = "/reports")
public String getFiles(Model model) {
//
//build array list
//
return files;
}
这会返回我的视图(WEB-INF/jsp/reports.jsp
),但是没有Jackson构建的JSON对象,所以当然我需要用@ResponseBody
注释方法,它会将JSON对象写入http响应自动,并返回files
ArrayList ...
@RequestMapping(method = RequestMethod.GET, value = "/reports")
@ResponseBody
public ArrayList<String> getFiles(Model model) {
//
///build array list
//
return files;
}
并且确实返回了JSON对象,但是在新视图/空白html文档中。是否可以返回JSON对象并同时重定向到“reports.jsp”?
答案 0 :(得分:5)
我在您的第一个示例中假设您实际上正在返回"reports"
而不是files
。如果你想要返回一个视图,你也不能返回一个响应主体 - 你只能返回一个东西。
因此,要么将其拆分为两个请求,要么将JSON放入模型中,并在JSP中检索它,例如
。爪哇:
ObjectMapper mapper = new ObjectMapper();
model.addAttribute("json", mapper.writeValueAsString(files));
JSP:
<script>
var files=${json};
</script>
答案 1 :(得分:2)
你可以自己创建json对象并添加到model(在这种情况下返回视图)或返回视图,然后在页面加载后调用另一个返回ajax对象的函数。