2012-07-07 59 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