org.springframework.web.servlet.mvc.method.annotation

## Class RequestPartMethodArgumentResolver

- java.lang.Object
- - org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
  - - org.springframework.web.servlet.mvc.method.annotation.RequestPartMethodArgumentResolver

All Implemented Interfaces:
  HandlerMethodArgumentResolver

    public class RequestPartMethodArgumentResolver
    extends AbstractMessageConverterMethodArgumentResolver

Resolves the following method arguments:

- Annotated with `@RequestPart`
- Of type `MultipartFile` in conjunction with Spring's `MultipartResolver` abstraction
- Of type `javax.servlet.http.Part` in conjunction with Servlet 3.0 multipart requests

When a parameter is annotated with `@RequestPart` the content of the part is passed through an `HttpMessageConverter` to resolve the method argument with the 'Content-Type' of the request part in mind. This is analogous to what @`RequestBody` does to resolve an argument based on the content of a regular request.

When a parameter is not annotated or the name of the part is not specified, it is derived from the name of the method argument.

Automatic validation may be applied if the argument is annotated with `@javax.validation.Valid`. In case of validation failure, a `MethodArgumentNotValidException` is raised and a 400 response status code returned if `DefaultHandlerExceptionResolver` is configured.

Since:
  3.1
Author:
  Rossen Stoyanchev

### Field Summary

### Fields inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver

`allSupportedMediaTypes, logger, messageConverters`

### Constructor Summary

Constructors
Constructor and Description
`RequestPartMethodArgumentResolver(List<HttpMessageConverter<?>> messageConverters)`

### Method Summary

Methods
`Object` `resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest request, WebDataBinderFactory binderFactory)` Resolves a method parameter into an argument value from a given request.
`boolean` `supportsParameter(MethodParameter parameter)` Supports the following: Annotated with `@RequestPart` Of type `MultipartFile` unless annotated with `@RequestParam`.

### Methods inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver

`createInputMessage, readWithMessageConverters, readWithMessageConverters`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### RequestPartMethodArgumentResolver

    public RequestPartMethodArgumentResolver(List<HttpMessageConverter<?>> messageConverters)

### Method Detail

#### supportsParameter

    public boolean supportsParameter(MethodParameter parameter)

Supports the following:

- Annotated with `@RequestPart`
- Of type `MultipartFile` unless annotated with `@RequestParam`.
- Of type `javax.servlet.http.Part` unless annotated with `@RequestParam`.

Parameters:
  `parameter` - the method parameter to check
Returns:
  `true` if this resolver supports the supplied parameter; `false` otherwise

#### resolveArgument

    public Object resolveArgument(MethodParameter parameter,
                         ModelAndViewContainer mavContainer,
                         NativeWebRequest request,
                         WebDataBinderFactory binderFactory)
                           throws Exception

Description copied from interface: `HandlerMethodArgumentResolver`
Resolves a method parameter into an argument value from a given request. A `ModelAndViewContainer` provides access to the model for the request. A `WebDataBinderFactory` provides a way to create a `WebDataBinder` instance when needed for data binding and type conversion purposes.

Parameters:
  `parameter` - the method parameter to resolve. This parameter must have previously been passed to `HandlerMethodArgumentResolver.supportsParameter(org.springframework.core.MethodParameter)` and it must have returned `true`
  `mavContainer` - the ModelAndViewContainer for the current request
  `request` - the current request
  `binderFactory` - a factory for creating `WebDataBinder` instances
Returns:
  the resolved argument value, or `null`.
Throws:
  `Exception` - in case of errors with the preparation of argument values