Skip to content

Commit 18b5f0a

Browse files
committed
Ensure precompiled GSP views are loaded in the correct order. Fixes #9836
1 parent 3628004 commit 18b5f0a

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

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

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import grails.config.Config
1818
import grails.core.GrailsClass
1919
import grails.core.GrailsTagLibClass
2020
import grails.gsp.PageRenderer
21+
import grails.io.IOUtils
2122
import grails.plugins.Plugin
2223
import grails.util.BuildSettings
2324
import grails.util.Environment
@@ -32,6 +33,7 @@ import org.grails.gsp.GroovyPageResourceLoader
3233
import org.grails.gsp.GroovyPagesTemplateEngine
3334
import org.grails.gsp.io.CachingGroovyPageStaticResourceLocator
3435
import org.grails.gsp.jsp.TagLibraryResolverImpl
36+
import org.grails.io.support.MainClassFinder
3537
import org.grails.plugins.web.taglib.*
3638
import org.grails.spring.RuntimeSpringConfiguration
3739
import org.grails.taglib.TagLibraryLookup
@@ -48,6 +50,7 @@ import org.grails.web.util.GrailsApplicationAttributes
4850
import org.springframework.beans.factory.config.PropertiesFactoryBean
4951
import org.springframework.boot.context.embedded.ServletRegistrationBean
5052
import org.springframework.core.io.Resource
53+
import org.springframework.core.io.UrlResource
5154
import org.springframework.util.ClassUtils
5255
import org.springframework.web.servlet.view.InternalResourceViewResolver
5356
/**
@@ -171,8 +174,23 @@ class GroovyPagesGrailsPlugin extends Plugin {
171174
resourceLoader = groovyPageResourceLoader
172175
}
173176
if (deployed) {
174-
def context = grailsApplication?.mainContext
175-
def allViewsProperties = context?.getResources("classpath*:gsp/views.properties")
177+
def defaultViews = getClass().classLoader.getResource('gsp/views.properties')
178+
List<Resource> allViewsProperties = []
179+
180+
for(plugin in pluginManager.allPlugins) {
181+
182+
def pluginViews = IOUtils.findResourceRelativeToClass(plugin.getPluginClass(), '/gsp/views.properties')
183+
if(pluginViews != null) {
184+
def res = new UrlResource(pluginViews)
185+
if(res.exists()) {
186+
allViewsProperties.add(res)
187+
}
188+
}
189+
}
190+
if(defaultViews != null) {
191+
allViewsProperties.add(new UrlResource(defaultViews))
192+
}
193+
176194
allViewsProperties = allViewsProperties?.findAll { Resource r ->
177195
def p = r.URL.path
178196
if(warDeployed && p.contains('/WEB-INF/classes')) {

0 commit comments

Comments
 (0)