1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.web.servlet.mvc.method.annotation;
18
19 import javax.servlet.http.HttpServletResponse;
20
21 import org.springframework.core.MethodParameter;
22 import org.springframework.http.HttpHeaders;
23 import org.springframework.http.server.ServletServerHttpResponse;
24 import org.springframework.util.Assert;
25 import org.springframework.web.context.request.NativeWebRequest;
26 import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
27 import org.springframework.web.method.support.ModelAndViewContainer;
28
29
30
31
32
33
34
35 public class HttpHeadersReturnValueHandler implements HandlerMethodReturnValueHandler {
36
37 @Override
38 public boolean supportsReturnType(MethodParameter returnType) {
39 return HttpHeaders.class.isAssignableFrom(returnType.getParameterType());
40 }
41
42 @Override
43 @SuppressWarnings("resource")
44 public void handleReturnValue(Object returnValue, MethodParameter returnType,
45 ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {
46
47 mavContainer.setRequestHandled(true);
48
49 Assert.isInstanceOf(HttpHeaders.class, returnValue);
50 HttpHeaders headers = (HttpHeaders) returnValue;
51
52 if (!headers.isEmpty()) {
53 HttpServletResponse servletResponse = webRequest.getNativeResponse(HttpServletResponse.class);
54 ServletServerHttpResponse outputMessage = new ServletServerHttpResponse(servletResponse);
55 outputMessage.getHeaders().putAll(headers);
56 outputMessage.getBody();
57 }
58 }
59
60 }