在我的Grails应用中,我有几个域类,比如Author
和Book
。我正在使用默认的URL映射:
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
}
因此,显示ID为2的图书的相对网址为/book/show/2
,或者ID为5的作者/author/show/5
。 Author
和Book
类都具有唯一的name
属性。
我希望显示作者或书籍的URL使用名称而不是数据库ID来标识书籍/作者,例如/author/show/shakespeare
和/book/show/ulysses
。这是否可以在不更改域类的情况下实现,以便名称字段是id(主键)?
答案 0 :(得分:2)
您可以将字符串(例如“莎士比亚”)作为params.id
传递,而不是执行以下操作:
Author.get(params.id)
在你的控制器方法中,执行:
Author.findByName(params.id)
据我所知,id
参数(与网址一起使用时) 不是long
。