在我的 Grails 应用程序中,我有以下控制器和操作
class FestivalController {
def show() {
[festival: Festival.get(params.id)]
}
}
我希望以下所有 URL 都映射到此控制器
/festival/show/1
/festival/show/1/glastonbury
/1/music/glastonbury
whereglastonbury
和music
分别是节日的名称和类型。请注意,实际上只需要 ID (1) 来识别节日,因此出于 SEO 和(URL 的)可读性的原因,名称和类型包含在 URL 中。
我尝试使用以下 URL 映射来支持这些不同的 URL
// this supports the 3rd mapping above
name showFestival: "/$id/$type?/$name?" {
controller = "festival"
action = "show"
}
// this supports the 1st mapping above
"/$controller/$action?/$id?/$name?"{
constraints {
}
}
这些支持第一个和第三个 URL 映射,但如果我尝试第二个
/festival/show/1/glastonbury
它不起作用。理想情况下,我希望 Grails 始终生成以下形式的 URL:
/1/music/glastonbury
当我使用g.createLink
or时g.link
,但我还希望以下 URL 映射到此操作(出于历史原因):
/festival/show/1
/festival/show/1/glastonbury