提交 25a5d9d7 编写于 作者: S Sam Brannen

Introduce alias for 'value' attribute in @RequestHeader

Issue: SPR-11393
上级 c4c3ce79
/* /*
* Copyright 2002-2014 the original author or authors. * Copyright 2002-2015 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -22,9 +22,12 @@ import java.lang.annotation.Retention; ...@@ -22,9 +22,12 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
/** /**
* Annotation which indicates that a method parameter should be bound to a web request header. * Annotation which indicates that a method parameter should be bound to a web request header.
* Supported for annotated handler methods in Servlet and Portlet environments. *
* <p>Supported for annotated handler methods in Servlet and Portlet environments.
* *
* <p>If the method parameter is {@link java.util.Map Map&lt;String, String&gt;} or * <p>If the method parameter is {@link java.util.Map Map&lt;String, String&gt;} or
* {@link org.springframework.util.MultiValueMap MultiValueMap&lt;String, String&gt;}, * {@link org.springframework.util.MultiValueMap MultiValueMap&lt;String, String&gt;},
...@@ -32,6 +35,7 @@ import java.lang.annotation.Target; ...@@ -32,6 +35,7 @@ import java.lang.annotation.Target;
* populated with all header names and values. * populated with all header names and values.
* *
* @author Juergen Hoeller * @author Juergen Hoeller
* @author Sam Brannen
* @since 3.0 * @since 3.0
* @see RequestMapping * @see RequestMapping
* @see RequestParam * @see RequestParam
...@@ -45,10 +49,18 @@ import java.lang.annotation.Target; ...@@ -45,10 +49,18 @@ import java.lang.annotation.Target;
public @interface RequestHeader { public @interface RequestHeader {
/** /**
* The name of the request header to bind to. * Alias for {@link #name}.
*/ */
@AliasFor(attribute = "name")
String value() default ""; String value() default "";
/**
* The name of the request header to bind to.
* @since 4.2
*/
@AliasFor(attribute = "value")
String name() default "";
/** /**
* Whether the header is required. * Whether the header is required.
* <p>Default is {@code true}, leading to an exception thrown in case * <p>Default is {@code true}, leading to an exception thrown in case
......
...@@ -267,7 +267,7 @@ public class HandlerMethodInvoker { ...@@ -267,7 +267,7 @@ public class HandlerMethodInvoker {
} }
else if (RequestHeader.class.isInstance(paramAnn)) { else if (RequestHeader.class.isInstance(paramAnn)) {
RequestHeader requestHeader = (RequestHeader) paramAnn; RequestHeader requestHeader = (RequestHeader) paramAnn;
headerName = requestHeader.value(); headerName = requestHeader.name();
required = requestHeader.required(); required = requestHeader.required();
defaultValue = parseDefaultValueAttribute(requestHeader.defaultValue()); defaultValue = parseDefaultValueAttribute(requestHeader.defaultValue());
annotationsFound++; annotationsFound++;
......
/* /*
* Copyright 2002-2014 the original author or authors. * Copyright 2002-2015 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -86,7 +86,7 @@ public class RequestHeaderMethodArgumentResolver extends AbstractNamedValueMetho ...@@ -86,7 +86,7 @@ public class RequestHeaderMethodArgumentResolver extends AbstractNamedValueMetho
private static class RequestHeaderNamedValueInfo extends NamedValueInfo { private static class RequestHeaderNamedValueInfo extends NamedValueInfo {
private RequestHeaderNamedValueInfo(RequestHeader annotation) { private RequestHeaderNamedValueInfo(RequestHeader annotation) {
super(annotation.value(), annotation.required(), annotation.defaultValue()); super(annotation.name(), annotation.required(), annotation.defaultValue());
} }
} }
......
/* /*
* 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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -141,10 +141,10 @@ public class RequestHeaderMethodArgumentResolverTests { ...@@ -141,10 +141,10 @@ public class RequestHeaderMethodArgumentResolverTests {
resolver.resolveArgument(paramNamedValueStringArray, null, webRequest, null); resolver.resolveArgument(paramNamedValueStringArray, null, webRequest, null);
} }
public void params(@RequestHeader(value = "name", defaultValue = "bar") String param1, public void params(@RequestHeader(name = "name", defaultValue = "bar") String param1,
@RequestHeader("name") String[] param2, @RequestHeader("name") String[] param2,
@RequestHeader(value = "name", defaultValue="#{systemProperties.systemProperty}") String param3, @RequestHeader(name = "name", defaultValue="#{systemProperties.systemProperty}") String param3,
@RequestHeader(value = "name", defaultValue="#{request.contextPath}") String param4, @RequestHeader(name = "name", defaultValue="#{request.contextPath}") String param4,
@RequestHeader("name") Map<?, ?> unsupported) { @RequestHeader("name") Map<?, ?> unsupported) {
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册