我有一个网站的URL与此类似:
/mysite/admin/controller/action/id
/mysite/search/controller/action/id
/mysite/user/controller/action/id
我有我的URL映射像这个
"/$prefix/$controller/$action?/$id?"{
constraints {}
}
我能够正确地到达控制器。
但在GSP方面,
<g:link controller="controller">abc</g:link> ==> <a href="/mysite/controller/...">abc</a>
注意我是如何丢失mysite和控制器之间的前缀的。
您可以使用命名的url映射,然后将prefix
作为参数的一部分传递:
URL映射:
name prefix: "/$prefix/$controller/$action?/$id?"{
constraints {}
}
GSP:
<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']" />
当您在浏览器中点击URL时,它会起作用,因为URL中有前缀。当您使用链接标记来创建url时,它不起作用,因为grails没有关于该控制器应该使用哪个前缀的信息。您需要提供前缀到链接标记的值。
试试这个
<g:link controller="controller" params="[prefix:'admin']">abc</g:link>
简而言之——如果你想让链接重写来考虑它们,你必须将这些动态变量作为参数传递。点击此处阅读更多文档