如何以编程方式知道在grails中是否存在视图或布局文件 [英] How to know programmatically if a view or a layout file exists in grails

查看:96
本文介绍了如何以编程方式知道在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆