Grails URL映射会导致GSP出错

时间:2012-02-13 15:14:49

标签: grails gsp urlmappings.groovy

我的网站的网址与此类似:

/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和控制器之间的前缀。

2 个答案:

答案 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