WW-4545 - Setting status code in HttpHeaders will be ignored

(cherry picked from commit 4cd9a74cb8)
This commit is contained in:
Johannes Geppert
2015-09-10 19:11:12 +02:00
committed by Aleksandr Mashchenko
parent 8bbfb461c4
commit f295852482
@@ -126,8 +126,12 @@ public class DefaultContentTypeHandlerManager implements ContentTypeHandlerManag
*/
public String handleResult(ActionConfig actionConfig, Object methodResult, Object target) throws IOException {
String resultCode = readResultCode(methodResult);
Integer statusCode = readStatusCode(methodResult);
HttpServletRequest req = ServletActionContext.getRequest();
HttpServletResponse res = ServletActionContext.getResponse();
if(statusCode != null) {
res.setStatus(statusCode);
}
ContentTypeHandler handler = getHandlerForResponse(req, res);
if (handler != null) {
@@ -143,13 +147,22 @@ public class DefaultContentTypeHandlerManager implements ContentTypeHandlerManag
res.setContentLength(data.length);
res.setContentType(handler.getContentType());
res.getOutputStream().write(data);
res.getOutputStream().close();
res.getOutputStream().flush();
}
}
}
return resultCode;
}
protected Integer readStatusCode(Object methodResult) {
if (methodResult instanceof HttpHeaders) {
return ((HttpHeaders) methodResult).getStatus();
} else {
return null;
}
}
protected String readResultCode(Object methodResult) {
if (methodResult == null) {
return null;