Grails:我们可以在g:link中传递string作为id吗?还是其他任何方式?

时间:2014-07-30 14:11:18

标签: grails grails-2.0 grails-controller

方案:
我想创建g:link,它将重定向到

www.xyz.com/controller/action/title_of_question

代替

www.xyz.com/controller/action/id_of_question

我知道以后可以轻松创建id的{​​{1}}参数 请注意g:linktitle_of_question,以连字符( - )为单位 任何人都可以建议我如何实现它吗?

3 个答案:

答案 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定义为LongInteger的规则,您可以使用下面的String标识符创建链接:

<g:link controller="controllerName" action="show" id="someName">Link!</g:link>

定义控制器操作,标识符为String

def show(String id) {
    ...
}
相关问题