2010-01-18 4 views
0

Мне нужно проверить, существует ли файл ресурсов (например, изображение), а если нет, я покажу другое изображение. Мой GSP вид код выглядит следующим образом:Как проверить наличие ресурсного файла во время выполнения [grails]?

<% if (resExists(dir: "images", file:"img.jpg")) {%> 
    <img src="${g.resource(dir:'images',file: 'img.jpg')}"> 
<% else { %> 
    <img src="${g.resource(dir:'images',file: 'noimg.jpg')}"> 
<%}%> 

Как я могу проверить на существование файла в Grails? Что такое код метода boolean resExists()

ответ

1

Я узнал ответ:

def resExists(resPath) { 
    def resFile = grailsApplication.parentContext.getResource(resPath) 
    resFile?.exists() 
} 

или

def resExists(resPath) { 
    def resFile = request.servletContext.getResource(resPath) 
    resPath 
} 

И вы называете это с resExists('images/img.jpg')

+0

Хорошая работа. Вы можете попробовать сделать это в пользовательский тег для своего приложения. См. Http://www.grails.org/doc/latest/guide/6.%20The%20Web%20Layer.html#6.2.2%20GSP%20Tags –

1

выше ответ не работал меня при использовании из плагина, упакованного как производственная война. Теперь я использую следующее:

GrailsConventionGroovyPageLocator groovyPageLocator 

def resExists(resPath) { 
    def resource = groovyPageLocator.findTemplateByPath(resPath) 
    resource 
} 
1

Я сделал следующее GSP:

<g:set var="flag" value="${new File(grailsApplication.mainContext.servletContext.getRealPath("images/sgs-geosol/sign/${sec.username()}.gif")).exists()}"></g:set> 

<g:if test="${flag}"> 

</g:if> 

ниже код возвращает реальный путь приложения Grails:

grailsApplication.mainContext.servletContext.getRealPath("") 
Смежные вопросы