Как знать программно, если представление или файл расположения существуют в чашах Грааля

Я хочу знать программно, если представление или расположение существуют в чашах Грааля.

Я думаю в, получают absolutepath и просят File.exists, но я не знаю, как получить этот путь для каждой среды.

Я попробовал groovyPagesTemplateEngine.getUriWithinGrailsViews('a-view.gsp') без успеха.

Можно ли дать мне какую-либо подсказку?

заранее спасибо

6
задан user2427 3 August 2010 в 13:15
поделиться

2 ответа

Я вижу 2 возможности

Поиск файла представления

Если вы создадите военный файл, вы увидите, что представления хранятся в WEB-INF / grails-app / views . Вы можете поискать этот ресурс.

def uri = this.getClass().getResource("/grails-app/views/...").toURI()
if(new File(uri).exists()){...}

Используйте PathMatchingResourcePatternResolver

Найдите вдохновение в методе assertView GrailsUrlMappingsTestCase.

def patternResolver = new PathMatchingResourcePatternResolver()
def pathPattern = "grails-app/views/" + ((controller) ? "$controller/" : "") + "${view}.*"
if (!patternResolver.getResources(pathPattern)) {...}
3
ответ дан 8 December 2019 в 05:19
поделиться

В дополнение к сказанному Амрой вы также можете использовать grailsAttributes (см. Документацию по GrailsApplicationAttributes ) . Быстрый пример:

private templateExists(String name) {
    def template = grailsAttributes.getTemplateUri(name, request)
    def resource = grailsAttributes.pagesTemplateEngine
                                   .getResourceForUri(template)
    return resource && resource.file && resource.exists()
}

Этот пример, конечно, предназначен для шаблонов, но, как вы можете видеть из документации, аналогичный метод существует и для представлений.

4
ответ дан 8 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: