這可以很容易地映射時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(){...}
注意
注意刪除grails提供的默認映射
背後取下默認項
//remove
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
理由: -
你不是其他的驗證器(create
和detail
)如果刪除該條目,您不使用REST服務的默認項假設。
嗯我不認爲我可以刪除由grails提供的默認映射。如果我刪除它,那麼我的其他控制器很多都會中斷,包括彈簧安全的映射 – Anthony
@Anthony那很好。我想我會照顧它的。看看'id'的驗證器。 :)讓我知道如果任何部分的答案是不可理解的。我會很樂意澄清。 – dmahapatro