Q:

Grails URL mapping cause error on GSP

I have a site that have URL similar to this:
/mysite/admin/controller/action/id
/mysite/search/controller/action/id
/mysite/user/controller/action/id

I have my URL mapping like this
"/$prefix/$controller/$action?/$id?"{
    constraints {}
}

I am able to get to the controller correctly.
But on the GSP side
<g:link controller="controller">abc</g:link> ==> <a href="/mysite/controller/...">abc</a>

Notice how I lose the prefix between mysite and the controller.

A:

You can use named url mappings and then pass the prefix as part of the params:
URLMappings:
name prefix: "/$prefix/$controller/$action?/$id?"{
    constraints {}
}

GSP:
<g:link mapping="prefix" params="[prefix:$prefix, controller:...]">abc</g:link>

To use sortableColumn, just put all of the URLMapping parameters in the params property:
<g:sortableColumn property="col" title="title" params="[ prefix: 'prefix', controller:'controller', action:'action']" />

