Skip to content

Commit 806a20c

Browse files
committed
Don't set cache = true because it passes caching off to the AbstractCachingViewResolver. Add controller to
GroovyPageViewResolver cache if the view is not absolute
1 parent 7218506 commit 806a20c

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

grails-plugin-gsp/src/main/groovy/org/grails/plugins/web/GroovyPagesGrailsPlugin.groovy

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,9 +245,6 @@ class GroovyPagesGrailsPlugin extends Plugin {
245245
if (enableReload) {
246246
cacheTimeout = gspCacheTimeout
247247
}
248-
else {
249-
cache = true
250-
}
251248
}
252249
// Configure a Spring MVC view resolver
253250
jspViewResolver(GroovyPageViewResolver) { bean ->

grails-web-gsp/src/main/groovy/org/grails/web/servlet/view/GroovyPageViewResolver.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.grails.web.servlet.view;
1717

1818
import grails.util.CacheEntry;
19+
import grails.util.GrailsStringUtils;
1920
import grails.util.GrailsUtil;
2021
import groovy.lang.GroovyObject;
2122

@@ -26,13 +27,11 @@
2627

2728
import javax.servlet.http.HttpServletRequest;
2829

29-
import org.apache.commons.logging.Log;
30-
import org.apache.commons.logging.LogFactory;
30+
3131
import org.grails.gsp.GroovyPagesTemplateEngine;
3232
import org.grails.web.gsp.io.GrailsConventionGroovyPageLocator;
3333
import org.grails.gsp.io.GroovyPageScriptSource;
3434
import org.grails.web.servlet.mvc.GrailsWebRequest;
35-
import org.grails.web.util.WebUtils;
3635
import org.slf4j.Logger;
3736
import org.slf4j.LoggerFactory;
3837
import org.springframework.beans.factory.annotation.Autowired;
@@ -96,7 +95,7 @@ protected View loadView(String viewName, Locale locale) throws Exception {
9695

9796
String viewCacheKey = groovyPageLocator.resolveViewFormat(viewName);
9897

99-
String currentControllerKeyPrefix = resolveCurrentControllerKeyPrefixes();
98+
String currentControllerKeyPrefix = resolveCurrentControllerKeyPrefixes(viewName.startsWith("/"));
10099
if (currentControllerKeyPrefix != null) {
101100
viewCacheKey = currentControllerKeyPrefix + ':' + viewCacheKey;
102101
}
@@ -139,14 +138,25 @@ public View call() throws Exception {
139138
/**
140139
* @return prefix for cache key that contains current controller's context (currently plugin and namespace)
141140
*/
142-
protected String resolveCurrentControllerKeyPrefixes() {
141+
protected String resolveCurrentControllerKeyPrefixes(boolean absolute) {
143142
String pluginContextPath;
144143
String namespace;
144+
String controller;
145145
GrailsWebRequest webRequest = GrailsWebRequest.lookup();
146146
if(webRequest != null) {
147+
StringBuilder stringBuilder = new StringBuilder();
147148
namespace = webRequest.getControllerNamespace();
149+
controller = webRequest.getControllerName();
148150
pluginContextPath = (webRequest.getAttributes() != null && webRequest.getCurrentRequest() != null) ? webRequest.getAttributes().getPluginContextPath(webRequest.getCurrentRequest()) : null;
149-
return (pluginContextPath != null ? pluginContextPath : "-") + "," + (namespace != null ? namespace : "-");
151+
152+
stringBuilder.append(GrailsStringUtils.isNotEmpty(pluginContextPath) ? pluginContextPath : "-");
153+
stringBuilder.append(',');
154+
stringBuilder.append(GrailsStringUtils.isNotEmpty(namespace) ? namespace : "-");
155+
if (!absolute && GrailsStringUtils.isNotEmpty(controller)) {
156+
stringBuilder.append(',');
157+
stringBuilder.append(controller);
158+
}
159+
return stringBuilder.toString();
150160
} else {
151161
return null;
152162
}

0 commit comments

Comments
 (0)