Grails 2.1.1
コントローラー アクションにマップするカスタマイズされた URL をいくつか追加したいと考えています 。
それはできますが、元のマッピングは引き続き機能します。
たとえば、次のようadd-property-to-directory
に myでマッピングを作成しました。UrlMappings
class UrlMappings {
static mappings = {
"/add-property-to-directory"(controller: "property", action: "create")
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
これで、期待どおりにヒットでき、/mysite/add-property-to-directory
実行されます。PropertyController.create
ただし、ヒット/mysite/property/create
することはできますが、同じPropertyController.create
メソッドが実行されます。
/mysite/property/create
DRY の精神で、 からへの 301 リダイレクトを行いたいと思います/mysite/add-property-to-directory
。
でこれを行う方法が見つかりませんでしたUrlMappings.groovy
。Grailsでこれを達成する方法を知っている人はいますか?
どうもありがとうございました!
アップデート
トムの答えに基づいて、私が実装したソリューションは次のとおりです。
UrlMappings.groovy
class UrlMappings {
static mappings = {
"/add-property-to-directory"(controller: "property", action: "create")
"/property/create" {
controller = "redirect"
destination = "/add-property-to-directory"
}
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
RedirectController.groovy
class RedirectController {
def index() {
redirect(url: params.destination, permanent: true)
}
}