link directly to GSP

Dónal picture Dónal · Jan 31, 2010 · Viewed 12.2k times · Source

In a GSP, is it possible to create a direct link to another GSP? I know I can use:

<g:createLink controller="user" action="foo"/>

and in UserController define the foo action to just show the corresponding GSP

class UserController {
    def foo = {}
}

But is there any way I can achieve the same result without having to create the empty foo action?

Thanks, Don

Answer

Colin Harrington picture Colin Harrington · Jan 31, 2010

The createLink tag is geared for use with controller actions and won't do what you want it to outside of the url attribute.

You can always get to a gsp by directly: /user/foo.gsp with a combination of the link and resource tags.

<g:link url="${resource(dir:'user', file:'foo.gsp')}">user/foo.gsp</g:link>

Othewise you can create a URL Mapping that maps a request directly to a view.

class UrlMappings {
    static mappings = {
        "/user/foo"(view:"user/foo")
    }
}

Using Grails 1.2 you can create a named URL Mapping that maps directly to a view:

class UrlMappings {
    static mappings = {
        name userFoo: "/user/foo"(view:"user/foo")
    }
}

and then use it with the link tag:

<link:userFoo>User Foo</link:userFoo>

or

<g:link mapping="userFoo">User Foo</g:link>