I need to find out the physical path of a grails GSP file.
My requirement is that I want to create a new layout file at run-time and use that in the application.
I have been able to achieve this without problem when the application runs on jetty (grails run-app), however, when I deploy the app on Jboss, the path at which the file needs to be created changes.
So, ideally I would like to find out at runtime using some magical utility the path of a particular GSP (lets say main.gsp layout file) and I need to create my new layout in the same directory in which main.gsp reside.
Any pointers?
-Deepak
Here is some groovy code to lookup the layout-folder path in the production environment (eg. when deployed as war on 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")
To use the newly created layout, you probably will need to restart the web-application or the container, since the views are chached in production mode.
There's a definitive way...
grailsApplication.parentContext.getResource("WEB-INF/grails-app/views/path/to/my.gsp").file.toString()
Out of controllers (ex. bootstrap)? Just inject..
def grailsApplication
Best regards!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With