为什么我在grails g:link标签创建的链接末尾看到双星号?

时间:2012-10-31 16:09:55

标签: grails

这样的代码:

<g:link controller="category" action="show" id="${category.id}">${category.name}</g:link>

生成下一个链接:

<a href="/shop/categories/show/1/**">Test category</a>

为什么会这样,以及如何删除这个看起来不好看的双星号?

1 个答案:

答案 0 :(得分:2)

来自你的评论:

  

URLMappings包含此"/categories/$action?/$id?/**?"。但我真的想告诉grails,如果URL在有意义的部分之后包含一些不必要的部分,我不在乎。

未绑定的通配符(***)为“转发”URL映射做正确的事情(即获取传入的请求URI并将其映射到带参数的控制器操作)但是,查看默认RegexUrlMapping的源代码,如果您尝试反向使用此类映射,***组件将直接包含在生成的URL中。为了能够生成合理的URL,映射的每个段必须是文字或绑定到命名变量,因此生成器可以知道它应该用于替换通配符的值(可能为空)。

如果您要使用映射

"/categories/$action?/$id?/$path**?"

然后它仍会在正向模式下匹配相同的URI(在idparams.path之后存储URI的尾随部分),但<g:link controller="category" action="show" id="${category.id}">将知道使用空的尾部组件因为您没有指定params="[path:'something']"