Spring Controller返回视图和JSON在一起

时间:2015-04-01 22:18:01

标签: java json spring

我正在尝试映射页面请求以同时返回视图 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”?

2 个答案:

答案 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对象的函数。