From df090235bb3b5693065b9e36e18150ee26c9d199 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 21 Oct 2014 12:13:54 -0400 Subject: [PATCH] Update documentation for Map arguments Issue: SPR-12347 --- .../web/bind/annotation/MatrixVariable.java | 11 ++++++++++- .../web/bind/annotation/PathVariable.java | 6 +++++- .../web/bind/annotation/RequestHeader.java | 7 ++++++- src/asciidoc/index.adoc | 10 ++++++++++ 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/bind/annotation/MatrixVariable.java b/spring-web/src/main/java/org/springframework/web/bind/annotation/MatrixVariable.java index 1f29473baa..6ae0d7e1c9 100644 --- a/spring-web/src/main/java/org/springframework/web/bind/annotation/MatrixVariable.java +++ b/spring-web/src/main/java/org/springframework/web/bind/annotation/MatrixVariable.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2014 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. @@ -27,6 +27,15 @@ import java.lang.annotation.Target; * name-value pair within a path segment. Supported for {@link RequestMapping} * annotated handler methods in Servlet environments. * + *

If the method parameter type is {@link java.util.Map} and a matrix variable + * name is specified, then the matrix variable value is converted to a + * {@link java.util.Map} assuming an appropriate conversion strategy is available. + * + *

If the method parameter is {@link java.util.Map Map<String, String>} or + * {@link org.springframework.util.MultiValueMap MultiValueMap<String, String>} + * and a variable name is not specified, then the map is populated with all + * matrix variable names and values. + * * @author Rossen Stoyanchev * @since 3.2 */ diff --git a/spring-web/src/main/java/org/springframework/web/bind/annotation/PathVariable.java b/spring-web/src/main/java/org/springframework/web/bind/annotation/PathVariable.java index a61f09ee45..2d64574d0e 100644 --- a/spring-web/src/main/java/org/springframework/web/bind/annotation/PathVariable.java +++ b/spring-web/src/main/java/org/springframework/web/bind/annotation/PathVariable.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2014 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. @@ -27,6 +27,10 @@ import java.lang.annotation.Target; * variable. Supported for {@link RequestMapping} annotated handler methods in Servlet * environments. * + *

If the method parameter is {@link java.util.Map Map<String, String>} or + * {@link org.springframework.util.MultiValueMap MultiValueMap<String, String>} + * then the map is populated with all path variable names and values. + * * @author Arjen Poutsma * @since 3.0 * @see RequestMapping diff --git a/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestHeader.java b/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestHeader.java index 47d2a56727..7276bc34b7 100644 --- a/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestHeader.java +++ b/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestHeader.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2014 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. @@ -26,6 +26,11 @@ import java.lang.annotation.Target; * 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. * + *

If the method parameter is {@link java.util.Map Map<String, String>} or + * {@link org.springframework.util.MultiValueMap MultiValueMap<String, String>}, + * or {@link org.springframework.http.HttpHeaders HttpHeaders} then the map is + * populated with all header names and values. + * * @author Juergen Hoeller * @since 3.0 * @see RequestMapping diff --git a/src/asciidoc/index.adoc b/src/asciidoc/index.adoc index 492f51790a..55e592b41b 100644 --- a/src/asciidoc/index.adoc +++ b/src/asciidoc/index.adoc @@ -30829,6 +30829,7 @@ multiple requests are allowed to access a session concurrently. <>. * `@RequestHeader` annotated parameters for access to specific Servlet request HTTP headers. Parameter values are converted to the declared method argument type. + See <>. * `@RequestBody` annotated parameters for access to the HTTP request body. Parameter values are converted to the declared method argument type using ++HttpMessageConverter++s. See <>. @@ -30968,6 +30969,10 @@ parameter is optional by setting ++@RequestParam++'s `required` attribute to `fa Type conversion is applied automatically if the target method parameter type is not `String`. See <>. +When an `@RequestParam` annotation is used on a `Map` or +`MultiValueMap` argument, the map is populated with all request +parameters. + [[mvc-ann-requestbody]] ===== Mapping the request body with the @RequestBody annotation @@ -31471,6 +31476,11 @@ The following code sample demonstrates how to get the value of the `Accept-Encod Type conversion is applied automatically if the method parameter is not `String`. See <>. +When an `@RequestHeader` annotation is used on a `Map`, +`MultiValueMap`, or `HttpHeaders` argument, the map is populated +with all header values. + + [TIP] ==== Built-in support is available for converting a comma-separated string into an