mirror of
https://github.com/apache/struts.git
synced 2026-08-07 07:37:20 +00:00
WW-4545 - Setting status code in HttpHeaders will be ignored
(cherry picked from commit 4cd9a74cb8)
This commit is contained in:
committed by
Aleksandr Mashchenko
parent
8bbfb461c4
commit
f295852482
+14
-1
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user