Spring Controller返回视图和JSON在一起

Kur*_*usu 7 java spring json

我正在尝试映射页面请求以同时返回视图 JSON对象.为此,我正在使用Jackson JSON提供商

这是我的Controller方法

@RequestMapping(method = RequestMethod.GET, value = "/reports")
public String getFiles(Model model) {
    //
    //build array list
    //
    return files;
}
Run Code Online (Sandbox Code Playgroud)

这会返回我的view(WEB-INF/jsp/reports.jsp),但是没有Jackson构建的JSON对象,所以当然我需要注释@ResponseBody用于自动将JSON对象写入http响应的方法,并返回filesArrayList ...

@RequestMapping(method = RequestMethod.GET, value = "/reports")
@ResponseBody
public ArrayList<String> getFiles(Model model) {
    //
    ///build array list
    //
    return files;
}
Run Code Online (Sandbox Code Playgroud)

并且确实返回了JSON对象,但是在新视图/空白html文档中.是否可以同时返回JSON对象并重定向到"reports.jsp"?

Cup*_*Tae 5

我在你的第一个例子中假设你实际上是在返回"reports"而不是files.如果你想返回一个视图,你也不能返回一个响应体 - 你只能返回一个东西.

因此,要么将其拆分为两个请求,要么将JSON放入模型中,并在JSP中检索它,例如

Java的:

ObjectMapper mapper = new ObjectMapper();
model.addAttribute("json", mapper.writeValueAsString(files));
Run Code Online (Sandbox Code Playgroud)

JSP:

<script>
   var files=${json};
</script>
Run Code Online (Sandbox Code Playgroud)

  • `["label":"value 1","label":"value 2"]`将无效JSON - 您不能拥有两个具有相同名称的属性.也许你想要`[{"label","value1"},{"label","value2"}]`...你应该发布一个带有预期输入和所需输出的新问题 (2认同)