一尘不染

如果Spring MVC控制器方法不返回值,该怎么办?

spring-mvc

我正在使用jQuery $.getJSON()对我的简单Spring MVC后端进行异步调用。大多数Spring控制器方法如下所示:

@RequestMapping(value = "/someURL", method = RequestMethod.POST)
public @ResponseBody SomePOJO getSomeData(@ModelAttribute Widget widget,
    @RequestParam("type") String type) {
    return someDAO.getSomeData(widget, type);
}

我已经进行了设置,以便每个控制器都将返回@ResponseBodyas JSON,这是客户端所期望的。

但是,当不应将请求返回任何内容到客户端时会发生什么呢?我能有......吗:

@RequestMapping(value = "/updateSomeData" method = RequestMethod.POST)
public @ResponseBody void updateDataThatDoesntRequireClientToBeNotified(...) {
    ...
}

如果没有,在这里使用什么合适的语法?提前致谢!


阅读 419

收藏
2020-06-01

共1个答案

一尘不染

您可以返回void,然后必须使用@ResponseStatus(value = HttpStatus.OK)标记该方法,而无需使用@ResponseBody

@RequestMapping(value = "/updateSomeData" method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
public void updateDataThatDoesntRequireClientToBeNotified(...) {
    ...
}

只有get方法隐式地返回200状态代码,所有其他方法都可以做以下三件事之一:

  • 返回void并用标记方法 @ResponseStatus(value = HttpStatus.OK)
  • 返回一个对象并标记为 @ResponseBody
  • 返回一个HttpEntity实例
2020-06-01