Introduce alias for 'value' attribute in @RequestPart
Issue: SPR-11393
This commit is contained in:
parent
034e0e2cf4
commit
c55486d5d5
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -23,6 +23,7 @@ import java.lang.annotation.Retention;
|
|||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
@ -30,7 +31,9 @@ import org.springframework.web.multipart.MultipartResolver;
|
|||
|
||||
/**
|
||||
* Annotation that can be used to associate the part of a "multipart/form-data" request
|
||||
* with a method argument. Supported method argument types include {@link MultipartFile}
|
||||
* with a method argument.
|
||||
*
|
||||
* <p>Supported method argument types include {@link MultipartFile}
|
||||
* in conjunction with Spring's {@link MultipartResolver} abstraction,
|
||||
* {@code javax.servlet.http.Part} in conjunction with Servlet 3.0 multipart requests,
|
||||
* or otherwise for any other method argument, the content of the part is passed through an
|
||||
|
@ -50,6 +53,7 @@ import org.springframework.web.multipart.MultipartResolver;
|
|||
*
|
||||
* @author Rossen Stoyanchev
|
||||
* @author Arjen Poutsma
|
||||
* @author Sam Brannen
|
||||
* @since 3.1
|
||||
*
|
||||
* @see RequestParam
|
||||
|
@ -61,15 +65,23 @@ import org.springframework.web.multipart.MultipartResolver;
|
|||
public @interface RequestPart {
|
||||
|
||||
/**
|
||||
* The name of the part in the "multipart/form-data" request to bind to.
|
||||
* Alias for {@link #name}.
|
||||
*/
|
||||
@AliasFor(attribute = "name")
|
||||
String value() default "";
|
||||
|
||||
/**
|
||||
* The name of the part in the "multipart/form-data" request to bind to.
|
||||
* @since 4.2
|
||||
*/
|
||||
@AliasFor(attribute = "value")
|
||||
String name() default "";
|
||||
|
||||
/**
|
||||
* Whether the part is required.
|
||||
* <p>Default is {@code true}, leading to an exception thrown in case
|
||||
* of the part missing in the request. Switch this to {@code false}
|
||||
* if you prefer a {@code null} in case of the part missing.
|
||||
* <p>Default is {@code true}, leading to an exception being thrown
|
||||
* in case the part is missing in the request. Switch this to
|
||||
* {@code false} if you prefer a {@code null} if the part is missing.
|
||||
*/
|
||||
boolean required() default true;
|
||||
|
||||
|
|
|
@ -188,8 +188,8 @@ public class RequestPartMethodArgumentResolver extends AbstractMessageConverterM
|
|||
}
|
||||
}
|
||||
|
||||
RequestPart ann = parameter.getParameterAnnotation(RequestPart.class);
|
||||
boolean isRequired = ((ann == null || ann.required()) && !optional);
|
||||
RequestPart requestPart = parameter.getParameterAnnotation(RequestPart.class);
|
||||
boolean isRequired = ((requestPart == null || requestPart.required()) && !optional);
|
||||
|
||||
if (arg == null && isRequired) {
|
||||
throw new MissingServletRequestPartException(partName);
|
||||
|
@ -209,8 +209,8 @@ public class RequestPartMethodArgumentResolver extends AbstractMessageConverterM
|
|||
}
|
||||
|
||||
private String getPartName(MethodParameter methodParam) {
|
||||
RequestPart ann = methodParam.getParameterAnnotation(RequestPart.class);
|
||||
String partName = (ann != null ? ann.value() : "");
|
||||
RequestPart requestPart = methodParam.getParameterAnnotation(RequestPart.class);
|
||||
String partName = (requestPart != null ? requestPart.name() : "");
|
||||
if (partName.length() == 0) {
|
||||
partName = methodParam.getParameterName();
|
||||
if (partName == null) {
|
||||
|
|
|
@ -179,14 +179,13 @@ public class RequestPartIntegrationTests {
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Controller
|
||||
private static class RequestPartTestController {
|
||||
|
||||
@RequestMapping(value = "/test", method = RequestMethod.POST, consumes = { "multipart/mixed", "multipart/form-data" })
|
||||
public ResponseEntity<Object> create(@RequestPart("json-data") TestData testData,
|
||||
public ResponseEntity<Object> create(@RequestPart(name = "json-data") TestData testData,
|
||||
@RequestPart("file-data") MultipartFile file,
|
||||
@RequestPart(value = "empty-data", required = false) TestData emptyData) {
|
||||
@RequestPart(name = "empty-data", required = false) TestData emptyData) {
|
||||
|
||||
String url = "http://localhost:8080/test/" + testData.getName() + "/" + file.getOriginalFilename();
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
|
|
Loading…
Reference in New Issue