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