Grails URL映射

时间:2012-02-02 14:06:04

标签: grails url-rewriting seo

在我的Grails应用中,我有几个域类,比如AuthorBook。我正在使用默认的URL映射:

static mappings = {
  "/$controller/$action?/$id?"{
    constraints {
      // apply constraints here
    }
  }
}

因此,显示ID为2的图书的相对网址为/book/show/2,或者ID为5的作者/author/show/5AuthorBook类都具有唯一的name属性。

我希望显示作者或书籍的URL使用名称而不是数据库ID来标识书籍/作者,例如/author/show/shakespeare/book/show/ulysses。这是否可以在不更改域类的情况下实现,以便名称字段是id(主键)?

1 个答案:

答案 0 :(得分:2)

您可以将字符串(例如“莎士比亚”)作为params.id传递,而不是执行以下操作:

Author.get(params.id)

在你的控制器方法中,执行:

Author.findByName(params.id)

据我所知,id参数(与网址一起使用时) 不是long