8.2.2.6 Tags as Method Calls 3.2.6

(Quick Reference) # 8.2.2.6 Tags as Method Calls Version: 3.2.6 ## 8.2.2.6 Tags as Method Calls One major different between GSP tags and other tagging technologies is that GSP tags can be called as either regular tags or as method calls from controllers, tag libraries or GSP views. #### Tags as method calls from GSPs Tags return their results as a String-like object (a `StreamCharBuffer` which has all of the same methods as String) instead of writing directly to the response when called as methods. For example:
    Static Resource: ${createLinkTo(dir: "images", file: "logo.jpg")}
This is particularly useful for using a tag within an attribute:
    <img src="${createLinkTo(dir: 'images', file: 'logo.jpg')}" />
In view technologies that don’t support this feature you have to nest tags within tags, which becomes messy quickly and often has an adverse effect of WYSIWYG tools such as Dreamweaver that attempt to render the mark-up as it is not well-formed:
    <img src="<g:createLinkTo dir="images" file="logo.jpg" />" />
#### Tags as method calls from Controllers and Tag Libraries You can also invoke tags from controllers and tag libraries. Tags within the default `g:` namespace can be invoked without the prefix and a `StreamCharBuffer` result is returned:
    def imageLocation = createLinkTo(dir:"images", file:"logo.jpg").toString()
Prefix the namespace to avoid naming conflicts:
    def imageLocation = g.createLinkTo(dir:"images", file:"logo.jpg").toString()
For tags that use a custom namespace, use that prefix for the method call. For example (from the FCK Editor plugin):
    def editor = fckeditor.editor(name: "text", width: "100%", height: "400")
| Quick Reference (hide)