Package org.springframework.web.bind.annotation

# Annotation Interface RequestParam

@Target(PARAMETER) @Retention(RUNTIME) @Documented public @interface RequestParam
Annotation which indicates that a method parameter should be bound to a web request parameter.

Supported for annotated handler methods in Spring MVC and Spring WebFlux as follows:

- In Spring MVC, "request parameters" map to query parameters, form data, and parts in multipart requests. This is because the Servlet API combines query parameters and form data into a single map called "parameters", and that includes automatic parsing of the request body.
- In Spring WebFlux, "request parameters" map to query parameters only. To work with all 3, query, form data, and multipart data, you can use data binding to a command object annotated with `ModelAttribute`.

If the method parameter type is `Map` and a request parameter name is specified, then the request parameter value is converted to a `Map` assuming an appropriate conversion strategy is available.

If the method parameter is `Map<String, String>` or `MultiValueMap<String, String>` and a parameter name is not specified, then the map parameter is populated with all request parameter names and values.

Since:
  2.5
Author:
  Arjen Poutsma, Juergen Hoeller, Sam Brannen
See Also:
  - `RequestMapping`
  - `RequestHeader`
  - `CookieValue`

## Optional Element Summary

Optional Elements
Modifier and Type
Optional Element
Description
`String`
`defaultValue`
The default value to use as a fallback when the request parameter is not provided or has an empty value.
`String`
`name`
The name of the request parameter to bind to.
`boolean`
`required`
Whether the parameter is required.
`String`
`value`
Alias for `name()`.

## Element Details

### value

@AliasFor("name") String value
Alias for `name()`.

Default:
  ""

### name

@AliasFor("value") String name
The name of the request parameter to bind to.

Since:
  4.2

Default:
  ""

### required

boolean required
Whether the parameter is required.

Defaults to `true`, leading to an exception being thrown if the parameter is missing in the request. Switch this to `false` if you prefer a `null` value if the parameter is not present in the request.

Alternatively, provide a `defaultValue()`, which implicitly sets this flag to `false`.

Default:
  true

### defaultValue

String defaultValue
The default value to use as a fallback when the request parameter is not provided or has an empty value.

Supplying a default value implicitly sets `required()` to `false`.

Default:
  "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n"