Skip to content

Commit df16bfa

Browse files
committed
Only flush() and close() the response if no error occurs. Fixes #9473
1 parent c06c4e3 commit df16bfa

File tree

3 files changed

+7
-9
lines changed

3 files changed

+7
-9
lines changed

grails-plugin-converters/src/main/groovy/grails/converters/JSON.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,8 @@ private void finalizeRender(Writer out) {
130130
*/
131131
public void render(Writer out) throws ConverterException {
132132
prepareRender(out);
133-
try {
134-
value(target);
135-
}
136-
finally {
137-
finalizeRender(out);
138-
}
133+
value(target);
134+
finalizeRender(out);
139135
}
140136

141137
/**

grails-plugin-converters/src/main/groovy/grails/converters/XML.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,12 @@ public void render(Writer out) throws ConverterException {
128128
writer.startNode(getElementName(target));
129129
convertAnother(target);
130130
writer.end();
131+
finalizeRender(out);
131132
}
132133
catch (Exception e) {
133134
throw new ConverterException(e);
134135
}
135136
finally {
136-
finalizeRender(out);
137137
isRendering = false;
138138
}
139139
}

grails-web-taglib/src/main/groovy/org/grails/web/taglib/encoder/WebOutputContextLookup.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.grails.web.servlet.mvc.GrailsWebRequest;
2727
import org.grails.web.taglib.WebRequestTemplateVariableBinding;
2828
import org.grails.web.util.GrailsApplicationAttributes;
29+
import org.grails.web.util.WebUtils;
2930
import org.springframework.core.Ordered;
3031
import org.springframework.web.context.request.RequestAttributes;
3132

@@ -105,8 +106,9 @@ public void setContentType(String contentType) {
105106

106107
@Override
107108
public boolean isContentTypeAlreadySet() {
108-
HttpServletResponse response = lookupResponse();
109-
return response.isCommitted() || response.getContentType() != null;
109+
GrailsWebRequest webRequest = lookupWebRequest();
110+
HttpServletResponse response = webRequest.getResponse();
111+
return response.isCommitted() || (response.getContentType() != null && webRequest.getRequest().getAttribute(WebUtils.ERROR_EXCEPTION_ATTRIBUTE) == null);
110112
}
111113

112114
protected GrailsWebRequest lookupWebRequest() {

0 commit comments

Comments
 (0)