From a3484aebb300c8021906e35a057d6fe2ec786cd6 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Wed, 15 Feb 2012 09:14:38 -0500 Subject: [PATCH] Minor fix in ServletResponseMethodArgumentResolver Issues: SPR-8983 --- .../ServletResponseMethodArgumentResolver.java | 6 ++++-- .../ServletResponseMethodArgumentResolverTests.java | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletResponseMethodArgumentResolver.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletResponseMethodArgumentResolver.java index e9344b0027d..f1eaa6607da 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletResponseMethodArgumentResolver.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletResponseMethodArgumentResolver.java @@ -61,8 +61,10 @@ public class ServletResponseMethodArgumentResolver implements HandlerMethodArgum MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws IOException { - - mavContainer.setRequestHandled(true); + + if (mavContainer != null) { + mavContainer.setRequestHandled(true); + } HttpServletResponse response = webRequest.getNativeResponse(HttpServletResponse.class); Class paramType = parameter.getParameterType(); diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ServletResponseMethodArgumentResolverTests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ServletResponseMethodArgumentResolverTests.java index 5ea3c893e63..14c37c7ecd6 100644 --- a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ServletResponseMethodArgumentResolverTests.java +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ServletResponseMethodArgumentResolverTests.java @@ -70,6 +70,16 @@ public class ServletResponseMethodArgumentResolverTests { assertTrue(mavContainer.isRequestHandled()); } + // SPR-8983 + + public void servletResponseNoMavContainer() throws Exception { + MethodParameter servletResponseParameter = new MethodParameter(method, 0); + assertTrue("ServletResponse not supported", resolver.supportsParameter(servletResponseParameter)); + + Object result = resolver.resolveArgument(servletResponseParameter, null, webRequest, null); + assertSame("Invalid result", servletResponse, result); + } + @Test public void outputStream() throws Exception { MethodParameter outputStreamParameter = new MethodParameter(method, 1);