在我的Grails应用程序,我有以下控制器和行动
class FestivalController {
def show() {
[festival: Festival.get(params.id)]
}
}
我想所有的下列URL映射到该控制器
/festival/show/1
/festival/show/1/glastonbury
/1/music/glastonbury
其中, glastonbury
和music
的名称,分别节日的类型。 只有ID(1)实际需要来识别节的通知,所以这个名字和类型都包含在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总是产生以下形式的网址:
/1/music/glastonbury
当我使用g.createLink
或g.link
,但我也想下面的网址映射到这个动作(由于历史原因):
/festival/show/1
/festival/show/1/glastonbury