2009-01-29 19 views
4

我需要找出grails GSP文件的物理路徑。如何在已部署的grails應用程序中找到GSP文件的物理路徑

我的要求是我想在運行時創建一個新的佈局文件並在應用程序中使用它。

但是,當我在Jboss上部署應用程序時,在應用程序上運行jetty(grails run-app)時,我已經能夠實現這一點,沒有任何問題,該文件需要創建的路徑發生更改。

所以,理想情況下,我想在運行時使用一些神奇的工具找出特定GSP的路徑(可以說main.gsp佈局文件),我需要在同一個目錄中創建我的新佈局。 gsp居住。

任何指針?

-Deepak

+1

你想完成什麼?我懷疑這在WARRED WEB應用程序的上下文中並不是一個真正有意義的問題 - 畢竟,你實際上沒有一個文件夾可以寫入。 – 2009-01-29 14:49:00

回答

9

下面是一些常規代碼查找在生產環境中的佈局文件夾路徑(例如,當部署在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") 

要使用新創建的佈局,您可能需要重新啓動Web應用程序或容器,因爲視圖是以生產模式分區的。

+0

如果您執行「grails prod run-war」,該代碼會給您帶來什麼? – 2009-01-29 14:47:22

1

在控制器可以使用

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

有一個明確的方式...

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

出的控制器(例如,引導)?只需注射..

def grailsApplication 

最好的問候!

相關問題