如何在已部署的grails应用程序中查找GSP文件的物理路径

时间:2009-01-29 09:57:45

标签: grails

我需要找出grails GSP文件的物理路径。

我的要求是我想在运行时创建一个新的布局文件并在应用程序中使用它。

当应用程序在jetty(grails run-app)上运行时,我能够毫无问题地实现这一点,但是,当我在Jboss上部署应用程序时,需要创建文件的路径会发生变化。

所以,理想情况下我想在运行时使用一些神奇的实用程序找出特定GSP的路径(比如说main.gsp布局文件),我需要在main.gsp所在的同一目录中创建我的新布局居住。

任何指针?

-Deepak

3 个答案:

答案 0 :(得分:9)

这是一些用于在生产环境中查找布局文件夹路径的常规代码(例如,在jboss上部署为war时):

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")

要使用新创建的布局,您可能需要重新启动Web应用程序或容器,因为视图在生产模式下被加载。

答案 1 :(得分:2)

有一种明确的方式......

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

控制器外(例如bootstrap)?刚注射..

def grailsApplication

祝你好运!

答案 2 :(得分:1)

在控制器中,您可以使用

grailsAttributes.getApplicationContext().getResource("/relative/path/").getFile().toString()