2012-07-07 65 views
1

我正在寫一個grails應用程序,其中我有region,districtstreamsregion包含district,因此region_iddistrict表的foreign key。在其他查詢僅與region相關聯的行中,我需要能夠將id傳遞給URL。 這裏是我的UrlMappings.groovy通過URL傳遞id grails groovy

static mappings = { 
     "/$controller/$action?/$id?"{ 
      constraints { 
       // apply constraints here 
      } 
     } 

     "/"(controller:"/user") 
     "500"(view:'/error') 
    } 

然而,然後我去我創建轉發到district控制器的鏈接(默認爲list我看到: localhost:8080/project/district/list,但它不具備region_id,所以我期待localhost:8080/project/district/list/region_id='1'?localhost:8080/project/district/list/id='1'? 可能有人請幫我指出哪裏是我的錯? 感謝

回答

3

/$controller/$action?/$id?意味着params地圖將擁有財產性id來自url的價值。對於像/project/district/list/5這樣的網址,此地圖返回5(assert params.id == 5)。

此外,您可以使用以下URL調用您的操作:/project/district/list?region_id=5並獲得5爲params.region_id

如果你想有不同的名稱,region_id,而不是`ID,並且不希望把它作爲一個查詢參數,就可以讓自己的映射:

"/district/list/$region_id"(controller:"district", action: "list") 

在這種情況下這個網址嚴格映射到控制器district和動作listparams.region_id將返回5爲/project/district/list/5