2010-03-01 111 views
6

Grails中创建网址的标准方法是:Grails的搜索引擎友好的URL

<a href="${createLink(controller:'news', action: 'show', params: [id: news.id])}">${news.title}</a> 

生成的网址:/news/show/102

我希望有更多的搜索引擎友好的URL,如:

/news/102/this-is-the-hottest-news-today 

什么是在Grails中做到这一点的最简单的方法?我可以使用grails URLMapping来将/news/show/102映射到/news/102,但我如何创建像上面那样的完整URL?

回答

15

你可以把标题变成像这样的参数:

name story: "/news/$id/$headline" { 
    controller = "news" 
    action = "show" 
} 

这种方法你可以在他们的标题和映射仍然工作创建您的网址。当然,您实际上不必使用将显示在控制器中的标题参数。上面的例子使用了一个名为URL映射,所以你可以然后说:

${createLink(mapping: "story", params: [id: 102, headline: 'this-is-the-hottest-news-today'])} 

您还可能有兴趣在这个插件用于创建规范的URL - http://www.grails.org/plugin/canonical

+0

+1。 '映射'的论点是我所需要的。谢谢。 – Langali 2010-03-02 22:16:47

+0

戴夫谢谢!这种方法对于多语言站点非常方便,您可以根据当前的语言环境定位特定的映射器。在我的示例中,我使用了story-en和story-hr映射,并在我的g:link中使用映射:“story - $ {locale}”,它为选定的语言环境选择适当的映射器。 – 2013-01-10 12:15:08