From 8a1a23af8361b986832be9b4befefe353afcd333 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Fri, 2 Apr 2010 08:39:26 +0000 Subject: [PATCH] SPR-7060 - @ResponseStatus: The reason value is not used. --- .../mvc/annotation/AnnotationMethodHandlerAdapter.java | 10 +++++++++- .../annotation/ServletAnnotationControllerTests.java | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.java index be26087f72b..af7bcbb6ea1 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.java @@ -814,9 +814,17 @@ public class AnnotationMethodHandlerAdapter extends WebContentGenerator ResponseStatus responseStatusAnn = AnnotationUtils.findAnnotation(handlerMethod, ResponseStatus.class); if (responseStatusAnn != null) { HttpStatus responseStatus = responseStatusAnn.value(); + String reason = responseStatusAnn.reason(); + if (!StringUtils.hasText(reason)) { + webRequest.getResponse().setStatus(responseStatus.value()); + } + else { + webRequest.getResponse().sendError(responseStatus.value(), reason); + } + // to be picked up by the RedirectView webRequest.getRequest().setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, responseStatus); - webRequest.getResponse().setStatus(responseStatus.value()); + responseArgumentUsed = true; } diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/ServletAnnotationControllerTests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/ServletAnnotationControllerTests.java index 726c6161939..1808d19fb49 100644 --- a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/ServletAnnotationControllerTests.java +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/ServletAnnotationControllerTests.java @@ -1307,6 +1307,7 @@ public class ServletAnnotationControllerTests { servlet.service(request, response); assertEquals("something", response.getContentAsString()); assertEquals(201, response.getStatus()); + assertEquals("It's alive!", response.getErrorMessage()); } @Test @@ -2382,7 +2383,7 @@ public class ServletAnnotationControllerTests { public static class ResponseStatusController { @RequestMapping("/something") - @ResponseStatus(HttpStatus.CREATED) + @ResponseStatus(value = HttpStatus.CREATED, reason = "It's alive!") public void handle(Writer writer) throws IOException { writer.write("something"); }