如何以编程方式知道在grails中是否存在视图或布局文件 [英] How to know programmatically if a view or a layout file exists in grails
问题描述
我想在获取绝对路径并请求File.exists,但是我不'我知道如何在每个环境中获得这条路径。
我试过 groovyPagesTemplateEngine.getUriWithinGrailsViews('a-view.gsp')
没有成功。
你可以给我任何指针吗?
预先感谢
我看到2个可能性
搜索视图文件
如果构建war文件,您将会看到视图存储在 WEB-INF / grails-app / views 中。您可以搜索该资源。
def uri = this.getClass()。getResource(/ grails-app / views / ...)。toURI()
if(new File(uri).exists()){...}
使用PathMatchingResourcePatternResolver
在 GrailsUrlMappingsTestCase的assertView 方法。
def patternResolver = new PathMatchingResourcePatternResolver()
def pathPattern =grails-app / views /+((controller)?$ controller / :)+$ {view}。*
if(!patternResolver.getResources(pathPattern)){...}
I want to know programmatically if a view or a layout exists in grails.
I am thinking in obtain the absolutepath and ask for File.exists but I don't know how to obtain this path for every enviroment.
I had tried groovyPagesTemplateEngine.getUriWithinGrailsViews('a-view.gsp')
without success.
Can you give me any pointer?
thanks in advance
I see 2 possibilities
Search for view file
If you build a war file you will see that views are stored in WEB-INF/grails-app/views. You can search for that resource.
def uri = this.getClass().getResource("/grails-app/views/...").toURI()
if(new File(uri).exists()){...}
Use PathMatchingResourcePatternResolver
Find a inspiration in assertView method of GrailsUrlMappingsTestCase.
def patternResolver = new PathMatchingResourcePatternResolver()
def pathPattern = "grails-app/views/" + ((controller) ? "$controller/" : "") + "${view}.*"
if (!patternResolver.getResources(pathPattern)) {...}
这篇关于如何以编程方式知道在grails中是否存在视图或布局文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!