Grails URL mapping cause error on GSP

2019-07-28 04:36发布

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.

2条回答
时光不老,我们不散
2楼-- · 2019-07-28 05:08

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']" />
查看更多
甜甜的少女心
3楼-- · 2019-07-28 05:11

It works when you hit the URL in browser, because prefix is available in URL. It does not work when you use link tag to create url, because grails does not have information about which prefix should be used for this controller. You will need to provide the value for prefix to link tag.

Try this

<g:link controller="controller" params="[prefix:'admin']">abc</g:link>

in-short - You have to pass those dynamic variables as params if you want link re-writing to consider them. Read more docs here

查看更多
登录 后发表回答