方案:
我想创建g:link
,它将重定向到
www.xyz.com/controller/action/title_of_question
代替
www.xyz.com/controller/action/id_of_question
我知道以后可以轻松创建id
的{{1}}参数
请注意g:link
为title_of_question
,以连字符( - )为单位
任何人都可以建议我如何实现它吗?
答案 0 :(得分:1)
我认为最好的办法是在您的控制器中创建一个新的Action,它会获取您的ID,并将您重定向到您尝试转到的网址。
<g:link resource="book" action="name" id="${id}">New Book</g:link>
然后在您的控制器中。
def name(int id) {
//take the ID, get the name, and redirect to the proper .gsp.
}
答案 1 :(得分:1)
我建议你做以下事情:
def someAction() {
if(params.id.matches(/[0-9]+/)) {
//logic for id of question
} else {
//you could check if it is separated with dashes
//logic for title of question
}
}
这将触发id逻辑:
www.xyz.com/controller/someAction/15
这就是&#39;标题&#39;逻辑:
www.xyz.com/controller/someAction/title-of-question
答案 2 :(得分:1)
简短回答:是的,我们可以:)
如果UrlMappings.groovy
中没有将id
定义为Long
或Integer
的规则,您可以使用下面的String
标识符创建链接:
<g:link controller="controllerName" action="show" id="someName">Link!</g:link>
定义控制器操作,标识符为String
:
def show(String id) {
...
}