1

我有一个网站,其 URL 类似于:

/mysite/admin/controller/action/id
/mysite/search/controller/action/id
/mysite/user/controller/action/id

我有这样的 URL 映射

"/$prefix/$controller/$action?/$id?"{
    constraints {}
}

我能够正确到达控制器。

但在普惠制方面

<g:link controller="controller">abc</g:link> ==> <a href="/mysite/controller/...">abc</a>

注意我是如何丢失 mysite 和控制器之间的前缀的。

4

2 回答 2

3

您可以使用命名的 url 映射,然后将其prefix作为参数的一部分传递:

网址映射:

name prefix: "/$prefix/$controller/$action?/$id?"{
    constraints {}
}

普惠制:

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

要使用sortableColumn,只需将所有 URLMapping 参数放在params属性中:

<g:sortableColumn property="col" title="title" params="[ prefix: 'prefix', controller:'controller', action:'action']" />
于 2012-02-13T15:47:06.320 回答
0

当您在浏览器中点击 URL 时,它会起作用,因为 URL 中提供了前缀。当您使用链接标签创建 url 时,它不起作用,因为 grails 没有关于该控制器应该使用哪个前缀的信息。您需要为链接标签提供前缀值。

尝试这个

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

简而言之 - 如果您希望链接重写以考虑它们,则必须将这些动态变量作为参数传递。在此处阅读更多文档

于 2012-02-13T16:26:30.433 回答