diff --git a/spring-test-mvc/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java b/spring-test-mvc/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java index 37c19f2e75..776aaf5a27 100644 --- a/spring-test-mvc/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java +++ b/spring-test-mvc/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java @@ -593,9 +593,8 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable for (Entry> entry : this.uriComponents.getQueryParams().entrySet()) { for (String value : entry.getValue()) { - request.addParameter( - UriUtils.decode(entry.getKey(), "UTF-8"), - UriUtils.decode(value, "UTF-8")); + value = (value != null) ? UriUtils.decode(value, "UTF-8") : null; + request.addParameter(UriUtils.decode(entry.getKey(), "UTF-8"), value); } } } diff --git a/spring-test-mvc/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java b/spring-test-mvc/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java index 9320acd338..e33e92260b 100644 --- a/spring-test-mvc/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java +++ b/spring-test-mvc/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java @@ -228,6 +228,19 @@ public class MockHttpServletRequestBuilderTests { assertEquals("bar=baz", request.getParameter("foo")); } + // SPR-11043 + + @Test + public void requestParameterFromQueryNull() throws Exception { + this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo"); + + MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); + Map parameterMap = request.getParameterMap(); + + assertArrayEquals(new String[]{null}, parameterMap.get("foo")); + assertEquals("foo", request.getQueryString()); + } + @Test public void acceptHeader() throws Exception { this.builder.accept(MediaType.TEXT_HTML, MediaType.APPLICATION_XML);