| This version is still in development and is not considered stable yet. For the latest stable version, please use Spring Framework 6.2.12! | 
Method Arguments
The next table describes the supported controller method arguments. Reactive types are not supported for any arguments.
JDK 8’s java.util.Optional is supported as a method argument in combination with
annotations that have a required attribute (for example, @RequestParam, @RequestHeader,
and others) and is equivalent to required=false.
| Controller method argument | Description | 
|---|---|
| 
 | Generic access to request parameters and request and session attributes, without direct use of the Servlet API. | 
| 
 | Choose any specific request or response type — for example,  | 
| 
 | Enforces the presence of a session. As a consequence, such an argument is never  | 
| 
 | Servlet 4.0 push builder API for programmatic HTTP/2 resource pushes.
  Note that, per the Servlet specification, the injected  | 
| 
 | Currently authenticated user — possibly a specific    Note that this argument is not resolved eagerly, if it is annotated in order to allow a custom resolver to resolve it
  before falling back on default resolution via  | 
| 
 | The HTTP method of the request. | 
| 
 | The current request locale, determined by the most specific  | 
| 
 | The time zone associated with the current request, as determined by a  | 
| 
 | For access to the raw request body as exposed by the Servlet API. | 
| 
 | For access to the raw response body as exposed by the Servlet API. | 
| 
 | For access to URI template variables. See URI patterns. | 
| 
 | For access to name-value pairs in URI path segments. See Matrix Variables. | 
| 
 | For access to the Servlet request parameters, including multipart files. Parameter values
  are converted to the declared method argument type. See    Note that use of  | 
| 
 | For access to request headers. Header values are converted to the declared method argument
  type. See  | 
| 
 | For access to cookies. Cookies values are converted to the declared method argument
  type. See  | 
| 
 | For access to the HTTP request body. Body content is converted to the declared method
  argument type by using  | 
| 
 | For access to request headers and body. The body is converted with an  | 
| 
 | For access to a part in a  | 
| 
 | For access to the model that is used in HTML controllers and exposed to templates as part of view rendering. | 
| 
 | Specify attributes to use in case of a redirect (that is, to be appended to the query string) and flash attributes to be stored temporarily until the request after redirect. See Redirect Attributes and Flash Attributes. | 
| 
 | For access to an existing attribute in the model (instantiated if not present) with
  data binding and validation applied. See    Note that use of  | 
| 
 | For access to errors from validation and data binding for a command object
  (that is, a  | 
| 
 | For marking form processing complete, which triggers cleanup of session attributes
  declared through a class-level  | 
| 
 | For preparing a URL relative to the current request’s host, port, scheme, context path, and the literal part of the servlet mapping. See URI Links. | 
| 
 | For access to any session attribute, in contrast to model attributes stored in the session
  as a result of a class-level  | 
| 
 | For access to request attributes. See  | 
| Any other argument | If a method argument is not matched to any of the earlier values in this table and it is
  a simple type (as determined by
	BeanUtils#isSimpleProperty),
  it is resolved as a  |