9

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/createDRY の精神で、 からへの 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)
    }
}
4

2 に答える 2