Skip to content
This repository was archived by the owner on Mar 10, 2025. It is now read-only.

Commit b848b0b

Browse files
authored
Merge pull request #129 from codeconsole/5.1.x-live-reload
Allow live reload of gsp scaffold templates.
2 parents 4070f80 + dd8495f commit b848b0b

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

src/main/groovy/grails/plugin/scaffolding/ScaffoldingGrailsPlugin.groovy

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package grails.plugin.scaffolding
22

33
import grails.plugins.*
4-
import org.grails.web.servlet.view.GroovyPageViewResolver
4+
import grails.util.Environment
5+
import grails.util.Metadata
56

67
class ScaffoldingGrailsPlugin extends Plugin {
78

@@ -38,10 +39,14 @@ Plugin that generates scaffolded controllers and views for a Grails application.
3839

3940
@Override
4041
Closure doWithSpring() { {->
42+
Environment env = Environment.current
43+
boolean reloadEnabled = env.isReloadEnabled() || (Metadata.getCurrent().isDevelopmentEnvironmentAvailable() && env == Environment.DEVELOPMENT)
44+
4145
// Configure a Spring MVC view resolver
4246
jspViewResolver(ScaffoldingViewResolver) { bean ->
4347
bean.lazyInit = true
4448
bean.parent = "abstractViewResolver"
49+
enableReload = reloadEnabled
4550
}
4651
}}
4752
}

src/main/groovy/grails/plugin/scaffolding/ScaffoldingViewResolver.groovy

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ class ScaffoldingViewResolver extends GroovyPageViewResolver implements Resource
6060

6161
ResourceLoader resourceLoader
6262
protected Map<String, View> generatedViewCache = new ConcurrentHashMap<>()
63+
protected boolean enableReload = false
64+
void setEnableReload(boolean enableReload) {
65+
this.enableReload = enableReload
66+
}
6367

6468
protected String buildCacheKey(String viewName) {
6569
String viewCacheKey = groovyPageLocator.resolveViewFormat(viewName)
@@ -100,7 +104,7 @@ class ScaffoldingViewResolver extends GroovyPageViewResolver implements Resource
100104
def view = super.loadView(viewName, locale)
101105
if (view == null) {
102106
String cacheKey = buildCacheKey(viewName)
103-
view = generatedViewCache.get(cacheKey)
107+
view = enableReload? null : generatedViewCache.get(cacheKey)
104108
if (view != null) {
105109
return view
106110
} else {
@@ -130,7 +134,7 @@ class ScaffoldingViewResolver extends GroovyPageViewResolver implements Resource
130134
def contents = new FastStringWriter()
131135
t.make(model.asMap()).writeTo(contents)
132136

133-
def template = templateEngine.createTemplate(new ByteArrayResource(contents.toString().getBytes(templateEngine.gspEncoding), "view:$cacheKey"))
137+
def template = templateEngine.createTemplate(new ByteArrayResource(contents.toString().getBytes(templateEngine.gspEncoding), "view:$cacheKey"), !enableReload)
134138
view = new GroovyPageView()
135139
view.setServletContext(getServletContext())
136140
view.setTemplate(template)

0 commit comments

Comments
 (0)