Как найти физический путь к файлу GSP в развернутом приложении Grails - PullRequest
4 голосов
/ 29 января 2009

Мне нужно выяснить физический путь файла GSP Grails.

Мое требование заключается в том, что я хочу создать новый файл макета во время выполнения и использовать его в приложении.

Я смог достичь этого без проблем, когда приложение работает на Jetty (Grails Run-App), однако, когда я развернул приложение на Jboss, путь, по которому должен быть создан файл, изменится.

Итак, в идеале я хотел бы выяснить во время выполнения с помощью какой-нибудь магической утилиты путь к определенному GSP (скажем, файл макета main.gsp), и мне нужно создать мой новый макет в том же каталоге, в котором main.gsp проживают.

Есть указатели?

-Deepak

Ответы [ 3 ]

9 голосов
/ 29 января 2009

Вот некоторый отличный код для поиска пути к папке макета в производственной среде (например, при развертывании как war на jboss):

import org.codehaus.groovy.grails.commons.ApplicationHolder

...

File layoutFolder = ApplicationHolder.application.parentContext.getResource("WEB-INF/grails-app/views/layouts").file      
def absolutePath = layoutFolder.absolutePath
println "Absolute Path to Layout Folder: ${absolutePath}"
File newLayoutFile = new File(layoutFolder, "foo.gsp")

Чтобы использовать вновь созданный макет, вам, вероятно, потребуется перезапустить веб-приложение или контейнер, поскольку представления производятся в производственном режиме.

2 голосов
/ 19 августа 2010

Есть определенный путь ...

grailsApplication.parentContext.getResource("WEB-INF/grails-app/views/path/to/my.gsp").file.toString()

Нет контроллеров (например, начальная загрузка)? Просто введите ...

def grailsApplication

С наилучшими пожеланиями!

1 голос
/ 25 апреля 2010

В контроллерах вы можете использовать

grailsAttributes.getApplicationContext().getResource("/relative/path/").getFile().toString()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...