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 56e396e7fc0..fe6f4848a25 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 @@ -938,6 +938,10 @@ public class AnnotationMethodHandlerAdapter extends WebContentGenerator if (body != null) { writeWithMessageConverters(body, inputMessage, outputMessage); } + else { + // flush headers + outputMessage.getBody(); + } } @SuppressWarnings("unchecked") 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 1eb75f530bb..0087ed29ec9 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 @@ -1212,6 +1212,7 @@ public class ServletAnnotationControllerTests { request = new MockHttpServletRequest("PUT", "/bar"); response = new MockHttpServletResponse(); servlet.service(request, response); + assertEquals("MyValue", response.getHeader("MyResponseHeader")); assertEquals(404, response.getStatus()); } @@ -2716,7 +2717,9 @@ public class ServletAnnotationControllerTests { @RequestMapping("/bar") public ResponseEntity bar() { - return new ResponseEntity(new HttpHeaders(), HttpStatus.NOT_FOUND); + HttpHeaders responseHeaders = new HttpHeaders(); + responseHeaders.set("MyResponseHeader", "MyValue"); + return new ResponseEntity(responseHeaders, HttpStatus.NOT_FOUND); } }