resource
Purpose
Creates a link that can be used where necessary (for example in an href, javascript, ajax call etc.)Examples
Example controller for an application called "shop":Example usages for the "shop" app:<g:resource dir="css" file="main.css" /> == /shop/css/main.css
<g:resource dir="css" file="main.css" absolute="true"/> == http://portal.mygreatsite.com/css/main.css
<g:resource dir="css" file="main.css" base="http://admin.mygreatsite.com"/> == http://admin.mygreatsite.com/css/main.css
 Example as a method call in GSP only:<link type="text/css" href="${resource(dir:'css',file:'main.css')}" /> Results in:<link type="text/css" href="/shop/css/main.css" />
Description
Attributes
base (optional) - Sets the prefix to be added to the link target address, typically an absolute server URL. This overrides the behaviour of the absolute property, if both are specified.x≈ 
contextPath (optional) - the context path to use (relative to the application context path). Defaults to "" or path to the plugin for a plugin view or template. 
dir (optional) - the name of the directory within the grails app to link to 
file (optional) - the name of the file within the grails app to link to 
absolute (optional) - If set to "true" will prefix the link target address with the value of the grails.serverURL property from Config, or http://localhost:<port> if no value in Config and not running in production. 
plugin (optional) - The plugin to look for the resource in 
Source
Show Source
def resource = { attrs ->
		def writer = out
		writer << handleAbsolute(attrs)
        def dir = attrs['dir']
		if(attrs.plugin) {
			writer << pluginManager.getPluginPath(attrs.plugin) ?: ''
		}
        else {
            if(attrs.contextPath != null) {
                writer << attrs.contextPath.toString() 
            }
            else {
                def pluginContextPath = pageScope.pluginContextPath
                if(dir != pluginContextPath)
                    writer << pluginContextPath ?: ''
            }
        }
        if(dir) {
           writer << (dir.startsWith("/") ?  dir : "/${dir}")
        }
        def file = attrs['file']
        if(file) {
           writer << (file.startsWith("/") || dir?.endsWith('/') ?  file : "/${file}")
        }
    }