我正在编写一个grails应用程序,我有region
,district
和streams
。 region
包含district
,因此region_id
是foreign key
表的district
。在其他方面,只查询与region
相关联的行,我需要能够将id
传递给URL。
这是我的UrlMappings.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'?
请有人帮我指出我的错误在哪里?
感谢
答案 0 :(得分:3)
/$controller/$action?/$id?
表示params
地图的属性id
具有来自网址的值。对于/project/district/list/5
这样的网址,此地图会返回5(assert params.id == 5
)。
您也可以使用以下网址调用您的操作:/project/district/list?region_id=5
并为params.region_id
获取5。
如果您想要使用不同的名称region_id
而不是`id,并且不希望将其作为查询参数传递,则可以创建自己的映射:
"/district/list/$region_id"(controller:"district", action: "list")
在这种情况下,此网址严格映射到控制器district
,操作list
和params.region_id
将为/project/district/list/5