Это может быть легко отображается при Grails 2.3 is concerned.
//Grails 2.3
"/color"(resources:'color') {
"/shades"(resources:"shade")
}
, то вы можете получить доступ к /color/${id}/shades
Когда Grails 2.2.4 или ниже, то я думаю, что ваш UrlMapping
может быть оптимизировано более, как показано ниже:
class UrlMappings {
static mappings = {
"/colors/$id?/$shades?" (resource: "color"){
constraints {
shades validator: {
it in ['shades']
}
id validator: {it.isNumber()}
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
//controller action corresponding
//GET
def show(){
if(params.id){
if(params.shades){
//If both id and shades present in URL
//then getShades
//maps to "/colors/5/shades"
getShades()
} else {
//If only id provided then GET color
//maps to "/colors/5"
getColor()
}
} else {
//If id not provided the list all colors
//maps to "/colors"
listColors()
}
}
private def getShades(){...}
private def getColor(){...}
private def listColors(){...}
Примечание
Примечание, чтобы удалить отображение по умолчанию, предоставляемое гравюрами
//remove
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
Обоснование за удаление записи по умолчанию: -
Вы не другой валидатор для (create
и detail
), если вы удалите эту запись, если вы не используете запись по умолчанию для REST сервисов.
hmm Я не думаю, что смогу удалить отображение по умолчанию, предоставляемое граалями. Если я удалю это, тогда ломаются другие мои контроллеры, включая сопоставления для весенней безопасности. – Anthony
@ Энтони То, хорошо. Думаю, я позаботился об этом. Посмотрите на валидатор для 'id'. :) Дайте мне знать, если какая-либо часть ответа непонятна. Я был бы рад прояснить ситуацию. – dmahapatro