Sto lavorando con Grails 2.1.1
e desidero aggiungere una manciata di URL personalizzati che si associano a Azioni controller.Url GraillMapping Reindirizza per mantenere DRY
Posso farlo, ma la mappatura originale funziona ancora.
Per esempio, ho creato una mappatura add-property-to-directory
nel mio UrlMappings
come segue:
class UrlMappings {
static mappings = {
"/add-property-to-directory"(controller: "property", action: "create")
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
Ora, posso colpire /mysite/add-property-to-directory
ed eseguirà PropertyController.create
, come mi sarei aspettato.
Tuttavia, posso ancora premere /mysite/property/create
e verrà eseguito lo stesso metodo PropertyController.create
.
Nello spirito di DRY, mi piacerebbe fare un reindirizzamento 301 da /mysite/property/create
a /mysite/add-property-to-directory
.
Non sono riuscito a trovare un modo per farlo in UrlMappings.groovy
. Qualcuno sa di come posso farlo in Grails?
Grazie mille!
UPDATE
Ecco la soluzione che ho implementato, in base alla risposta di Tom:
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)
}
}
Non è possibile al momento. C'è una richiesta di funzionalità che consente di specificare reindirizzamenti nei mapping URL: consulta http://jira.grails.org/browse/GRAILS-5994 –
@sudhir Grazie, questo risponde alla mia domanda. Potresti per favore copiare il tuo commento in una risposta in modo che io possa accettarlo? –
@sudhir, grazie per il tuo commento e il link utile ... Tom ha modificato la sua risposta e mi ha guidato sulla strada giusta per fare ciò che cercavo, così ho accettato la sua risposta. –