私の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) のみであるため、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 {
}
}
これらは 1 番目と 3 番目の URL マッピングをサポートしていますが、2 番目を試してみると
/festival/show/1/glastonbury
うまくいきません。理想的には、Grails が常に次の形式の URL を生成するようにしたいと考えています。
/1/music/glastonbury
g.createLink
またはを使用する場合g.link
、次の URL もこのアクションにマップする必要があります (歴史的な理由から)。
/festival/show/1
/festival/show/1/glastonbury