跳到主要内容
版本:7.0.3

方法参数

Hunyuan 7b 中英对照 Method Arguments

下表显示了支持的控制器方法参数。

对于需要阻塞I/O(例如,读取请求体)才能解决的参数,支持使用反应式类型(Reactor、RxJava或其他库(如https://github.com/webflux/reactive-libraries.md))。这一点会在“描述”列中标明。而对于不需要阻塞的参数,则不期望使用反应式类型。

JDK 1.8中的java.util.Optional可以作为方法参数使用,当与具有required属性的注解(例如@RequestParam@RequestHeader等)结合使用时,其效果等同于required=false

控制器方法参数描述
ServerWebExchange可以访问完整的ServerWebExchange容器,该容器用于处理HTTP请求和响应、请求和会话属性、checkNotModified方法等。
ServerHttpRequest, ServerHttpResponse对HTTP请求或响应的访问。
WebSession对会话的访问。除非添加了属性,否则不会强制启动新的会话。支持反应型类型(reactive types)。
java.security.Principal当前已认证的用户——如果已知的话,可能是某个具体的Principal实现类。支持反应式类型(reactive types)。
org.springframework.http.HttpMethod请求的HTTP方法。
java.util.Locale当前的请求区域设置(locale),是由最具体的 LocaleResolver 决定的——实际上,就是配置好的 LocaleResolverLocaleContextResolver
java.util.TimeZone + java.time.ZoneId当前请求所关联的时区,由LocaleContextResolver确定。
@PathVariable要访问 URI 模板变量,请参阅 URI 模式
@MatrixVariable有关访问URI路径段中的名称-值对的信息,请参阅矩阵变量
@RequestParam用于访问查询参数。参数值会被转换为声明的方法参数类型。请参见@RequestParam

请注意,使用@RequestParam是可选的——例如,可以设置其属性。请参阅本表后面的“其他参数”。
@RequestHeader用于访问请求头。请求头的值会转换为声明的方法参数类型。请参阅@RequestHeader
@CookieValue为了访问cookie,cookie的值会被转换为声明的方法参数类型。请参阅@CookieValue
@RequestBody用于访问HTTP请求体。通过使用HttpMessageReader实例,请求体内容会被转换为声明的方法参数类型。支持反应式(reactive)类型。请参阅@RequestBody
HttpEntity<B>用于访问请求头和请求体。请求体通过HttpMessageReader实例进行转换。支持响应式类型。详见HttpEntity
@RequestPart用于访问multipart/form-data请求中的部分数据。支持反应式类型(reactive types)。请参阅Multipart ContentMultipart Data
java.util.Map or org.springframework.ui.Model用于访问在HTML控制器中使用的模型,该模型作为视图渲染的一部分暴露给模板。
@ModelAttribute要访问模型中已存在的属性(如果不存在则进行实例化),并应用数据绑定和验证功能,请参阅@ModelAttribute,以及ModelDataBinder

请注意,使用*@ModelAttribute*是可选的——例如,可以用来设置其属性。请参见本表后面的“其他参数”。
Errors or BindingResult为了访问命令对象(即@ModelAttribute参数)的验证和数据绑定过程中产生的错误,必须在经过验证的方法参数之后立即声明一个ErrorsBindingResult参数。
SessionStatus + class-level @SessionAttributes用于标记表单处理完成,这将触发通过类级@SessionAttributes注解声明的会话属性的清理。详情请参见@SessionAttributes
UriComponentsBuilder用于准备一个相对于当前请求的主机、端口、协议和上下文路径的URL。请参阅URI链接
@SessionAttribute与通过类级别的@SessionAttributes声明存储在会话中的模型属性不同,要访问任何会话属性(session attribute),请参见@SessionAttribute以获取更多详细信息。
@RequestAttribute如需访问请求属性,请参阅@RequestAttribute以获取更多详细信息。
还有其他论点吗?如果方法参数与上述任何一种类型都不匹配,那么默认情况下,如果它是简单类型(根据BeanUtils#isSimpleProperty的判断),它将被解析为@RequestParam;否则,它将被解析为@ModelAttribute