Skip to content

Commit 2a71b5e

Browse files
authored
Merge pull request #10840 from grails/3.2.x-10789
Apply github.com/grails/grails-gsp #3f9c4fb
2 parents f181397 + 8d825e6 commit 2a71b5e

File tree

1 file changed

+46
-10
lines changed

1 file changed

+46
-10
lines changed

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

Lines changed: 46 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import grails.core.GrailsApplication;
2020
import org.grails.encoder.EncodingStateRegistry;
2121
import org.grails.taglib.AbstractTemplateVariableBinding;
22+
import org.grails.taglib.TemplateVariableBinding;
2223
import org.grails.taglib.encoder.OutputContext;
2324
import org.grails.taglib.encoder.OutputContextLookup;
2425
import org.grails.taglib.encoder.OutputEncodingStack;
@@ -54,17 +55,26 @@ static class WebOutputContext implements OutputContext {
5455

5556
@Override
5657
public EncodingStateRegistry getEncodingStateRegistry() {
57-
return lookupWebRequest().getEncodingStateRegistry();
58+
GrailsWebRequest grailsWebRequest = lookupWebRequest();
59+
if(grailsWebRequest != null)
60+
return grailsWebRequest.getEncodingStateRegistry();
61+
return null;
5862
}
5963

6064
@Override
6165
public void setCurrentOutputEncodingStack(OutputEncodingStack outputEncodingStack) {
62-
lookupWebRequest().setAttribute(ATTRIBUTE_NAME_OUTPUT_STACK, outputEncodingStack, RequestAttributes.SCOPE_REQUEST);
66+
GrailsWebRequest grailsWebRequest = lookupWebRequest();
67+
if(grailsWebRequest != null)
68+
grailsWebRequest.setAttribute(ATTRIBUTE_NAME_OUTPUT_STACK, outputEncodingStack, RequestAttributes.SCOPE_REQUEST);
6369
}
6470

6571
@Override
6672
public OutputEncodingStack getCurrentOutputEncodingStack() {
67-
return (OutputEncodingStack) lookupWebRequest().getAttribute(ATTRIBUTE_NAME_OUTPUT_STACK, RequestAttributes.SCOPE_REQUEST);
73+
GrailsWebRequest grailsWebRequest = lookupWebRequest();
74+
if(grailsWebRequest != null) {
75+
return (OutputEncodingStack) grailsWebRequest.getAttribute(ATTRIBUTE_NAME_OUTPUT_STACK, RequestAttributes.SCOPE_REQUEST);
76+
}
77+
return null;
6878
}
6979

7080
@Override
@@ -74,34 +84,51 @@ public Writer getCurrentWriter() {
7484

7585
@Override
7686
public void setCurrentWriter(Writer currentWriter) {
77-
lookupWebRequest().setOut(currentWriter);
87+
GrailsWebRequest grailsWebRequest = lookupWebRequest();
88+
if(grailsWebRequest != null) {
89+
grailsWebRequest.setOut(currentWriter);
90+
}
7891
}
7992

8093
@Override
8194
public AbstractTemplateVariableBinding createAndRegisterRootBinding() {
82-
AbstractTemplateVariableBinding binding = new WebRequestTemplateVariableBinding(lookupWebRequest());
95+
GrailsWebRequest webRequest = lookupWebRequest();
96+
AbstractTemplateVariableBinding binding = webRequest != null ? new WebRequestTemplateVariableBinding(webRequest) : new TemplateVariableBinding();
8397
setBinding(binding);
8498
return binding;
8599
}
86100

87101
@Override
88102
public AbstractTemplateVariableBinding getBinding() {
89-
return (AbstractTemplateVariableBinding)lookupWebRequest().getAttribute(GrailsApplicationAttributes.PAGE_SCOPE, RequestAttributes.SCOPE_REQUEST);
103+
GrailsWebRequest grailsWebRequest = lookupWebRequest();
104+
if(grailsWebRequest == null) {
105+
return null;
106+
}
107+
return (AbstractTemplateVariableBinding) grailsWebRequest.getAttribute(GrailsApplicationAttributes.PAGE_SCOPE, RequestAttributes.SCOPE_REQUEST);
90108
}
91109

92110
@Override
93111
public void setBinding(AbstractTemplateVariableBinding binding) {
94-
lookupWebRequest().setAttribute(GrailsApplicationAttributes.PAGE_SCOPE, binding, RequestAttributes.SCOPE_REQUEST);
112+
GrailsWebRequest grailsWebRequest = lookupWebRequest();
113+
if(grailsWebRequest != null) {
114+
grailsWebRequest.setAttribute(GrailsApplicationAttributes.PAGE_SCOPE, binding, RequestAttributes.SCOPE_REQUEST);
115+
}
95116
}
96117

97118
@Override
98119
public GrailsApplication getGrailsApplication() {
99-
return lookupWebRequest().getAttributes().getGrailsApplication();
120+
GrailsWebRequest grailsWebRequest = lookupWebRequest();
121+
if(grailsWebRequest != null)
122+
return grailsWebRequest.getAttributes().getGrailsApplication();
123+
return null;
100124
}
101125

102126
@Override
103127
public void setContentType(String contentType) {
104-
lookupResponse().setContentType(contentType);
128+
HttpServletResponse httpServletResponse = lookupResponse();
129+
if(httpServletResponse != null) {
130+
httpServletResponse.setContentType(contentType);
131+
}
105132
}
106133

107134
@Override
@@ -117,7 +144,16 @@ protected GrailsWebRequest lookupWebRequest() {
117144

118145
protected HttpServletResponse lookupResponse() {
119146
HttpServletResponse wrapped = WrappedResponseHolder.getWrappedResponse();
120-
return wrapped != null ? wrapped : lookupWebRequest().getCurrentResponse();
147+
if(wrapped != null) {
148+
return wrapped;
149+
}
150+
else {
151+
GrailsWebRequest grailsWebRequest = lookupWebRequest();
152+
if(grailsWebRequest != null) {
153+
return grailsWebRequest.getCurrentResponse();
154+
}
155+
}
156+
return null;
121157
}
122158
}
123159
}

0 commit comments

Comments
 (0)