1717import grails .util .Environment ;
1818import groovy .lang .Binding ;
1919import groovy .lang .Writable ;
20+
21+ import java .io .BufferedReader ;
22+ import java .io .IOException ;
23+ import java .io .InputStream ;
24+ import java .io .InputStreamReader ;
25+ import java .io .Reader ;
26+ import java .io .Writer ;
27+ import java .text .DateFormat ;
28+ import java .util .Date ;
29+ import java .util .HashMap ;
30+ import java .util .Map ;
31+ import java .util .concurrent .atomic .AtomicInteger ;
32+
33+ import javax .servlet .http .HttpServletRequest ;
34+ import javax .servlet .http .HttpServletResponse ;
35+
2036import org .apache .commons .logging .Log ;
2137import org .apache .commons .logging .LogFactory ;
2238import org .codehaus .groovy .grails .web .pages .exceptions .GroovyPagesException ;
2339import org .codehaus .groovy .grails .web .servlet .GrailsApplicationAttributes ;
2440import org .codehaus .groovy .grails .web .servlet .WrappedResponseHolder ;
2541import org .codehaus .groovy .grails .web .servlet .mvc .GrailsWebRequest ;
26- import org .codehaus .groovy .grails .web .util .WebUtils ;
2742import org .springframework .web .context .request .RequestContextHolder ;
2843
29- import javax .servlet .http .HttpServletRequest ;
30- import javax .servlet .http .HttpServletResponse ;
31- import java .io .*;
32- import java .text .DateFormat ;
33- import java .util .Date ;
34- import java .util .HashMap ;
35- import java .util .Map ;
36- import java .util .concurrent .atomic .AtomicInteger ;
37-
3844/**
3945 * An instance of groovy.lang.Writable that writes itself to the specified
4046 * writer, typically the response writer.
4450 * @since 0.5
4551 */
4652class GroovyPageWritable implements Writable {
47-
4853 private static final Log LOG = LogFactory .getLog (GroovyPageWritable .class );
4954 private static final String ATTRIBUTE_NAME_DEBUG_TEMPLATES_ID_COUNTER = "org.codehaus.groovy.grails.web.pages.DEBUG_TEMPLATES_COUNTER" ;
55+ private static final String GSP_NONE_CODEC_NAME = "none" ;
5056 private HttpServletResponse response ;
5157 private HttpServletRequest request ;
5258 private GroovyPageMetaInfo metaInfo ;
@@ -157,7 +163,7 @@ public Writer writeTo(Writer out) throws IOException {
157163 }
158164
159165 GroovyPageBinding binding = createBinding (parentBinding );
160- String previousGspCode = null ;
166+ String previousGspCode = GSP_NONE_CODEC_NAME ;
161167 if (hasRequest ) {
162168 request .setAttribute (GrailsApplicationAttributes .PAGE_SCOPE , binding );
163169 previousGspCode = (String )request .getAttribute (GrailsApplicationAttributes .GSP_CODEC );
@@ -170,7 +176,7 @@ public Writer writeTo(Writer out) throws IOException {
170176 binding .setVariableDirectly (GroovyPage .CODEC_VARNAME , metaInfo .getCodecClass ());
171177 } else {
172178 if (hasRequest ) {
173- request .setAttribute (GrailsApplicationAttributes .GSP_CODEC , null );
179+ request .setAttribute (GrailsApplicationAttributes .GSP_CODEC , GSP_NONE_CODEC_NAME );
174180 }
175181 binding .setVariableDirectly (GroovyPage .CODEC_VARNAME , gspNoneCodeInstance );
176182 }
@@ -219,7 +225,7 @@ public Writer writeTo(Writer out) throws IOException {
219225 } else {
220226 request .setAttribute (GrailsApplicationAttributes .PAGE_SCOPE , parentBinding );
221227 }
222- request .setAttribute (GrailsApplicationAttributes .GSP_CODEC , previousGspCode );
228+ request .setAttribute (GrailsApplicationAttributes .GSP_CODEC , previousGspCode != null ? previousGspCode : GSP_NONE_CODEC_NAME );
223229 }
224230 }
225231 if (debugTemplates ) {
0 commit comments