use*_*427 6 grails layout views
我想以编程方式了解Grails中是否存在视图或布局.
我正在考虑获取绝对路径并询问File.exists但我不知道如何为每个环境获取此路径.
我试过groovyPagesTemplateEngine.getUriWithinGrailsViews('a-view.gsp')没有成功.
你能指点我吗?
提前致谢
Ing*_*gel 16
从Grails 2.0开始,您可以注入GrailsConventionGroovyPageLocator:
GrailsConventionGroovyPageLocator groovyPageLocator
Run Code Online (Sandbox Code Playgroud)
并打电话
groovyPageLocator.findViewByPath(...)
groovyPageLocator.findTemplateByPath(...)
Run Code Online (Sandbox Code Playgroud)
检查是否存在视图或模板.
我看到两种可能性
如果您构建一个 war 文件,您将看到视图存储在WEB-INF/grails-app/views中。您可以搜索该资源。
def uri = this.getClass().getResource("/grails-app/views/...").toURI()
if(new File(uri).exists()){...}
Run Code Online (Sandbox Code Playgroud)
在GrailsUrlMappingsTestCase 的assertView方法中寻找灵感。
def patternResolver = new PathMatchingResourcePatternResolver()
def pathPattern = "grails-app/views/" + ((controller) ? "$controller/" : "") + "${view}.*"
if (!patternResolver.getResources(pathPattern)) {...}
Run Code Online (Sandbox Code Playgroud)