返回值

以下表格显示了支持的控制器方法返回值。请注意,来自Reactor、RxJava等库的响应式类型通常适用于所有返回值。

控制器方法返回值 描述

@ResponseBody

返回值通过HttpMessageWriter实例进行编码,并写入响应。请参阅@ResponseBody

HttpEntity<B>, ResponseEntity<B>

返回值指定完整的响应,包括HTTP标头,主体通过HttpMessageWriter实例进行编码并写入响应。请参阅ResponseEntity

HttpHeaders

返回具有标头但没有主体的响应。

ErrorResponse

渲染带有主体详细信息的RFC 7807错误响应,请参阅错误响应

ProblemDetail

渲染带有主体详细信息的RFC 7807错误响应,请参阅错误响应

String

要与ViewResolver实例一起解析并与隐式模型一起使用的视图名称,通过命令对象和@ModelAttribute方法确定。处理程序方法还可以通过声明Model参数(在此前描述)来以编程方式丰富模型。

View

要与隐式模型一起使用的View实例,通过命令对象和@ModelAttribute方法确定。处理程序方法还可以通过声明Model参数(在此前描述)来以编程方式丰富模型。

java.util.Map, org.springframework.ui.Model

要添加到隐式模型的属性,视图名称隐式确定基于请求路径。

@ModelAttribute

要添加到模型的属性,视图名称隐式确定基于请求路径。

@ModelAttribute是可选的。请参阅本表中稍后的“任何其他返回值”。

Rendering

用于模型和视图渲染场景的API。

void

具有void、可能是异步的(例如Mono<Void>)返回类型(或null返回值)的方法被认为已完全处理了响应,如果它还具有ServerHttpResponseServerWebExchange参数或@ResponseStatus注解。如果控制器进行了积极的ETag或lastModified时间戳检查,也是如此。有关详细信息,请参阅控制器

如果以上情况均不成立,则void返回类型也可以表示REST控制器的“无响应主体”或HTML控制器的默认视图名称选择。

Flux<ServerSentEvent>, Observable<ServerSentEvent>或其他响应式类型

发出服务器发送的事件。当只需要写入数据时,可以省略ServerSentEvent包装器(但必须通过produces属性在映射中请求或声明text/event-stream)。

其他返回值

如果返回值以任何其他方式保持未解析状态,则将其视为模型属性,除非它是由BeanUtils#isSimpleProperty确定的简单类型,在这种情况下将保持未解析状态。