我有以下名为UrlMapping
name 'admin_user' :"/admin/user/$action?/$id?"(controller:'userAdmin')
在另一个页面site/edit.gsp (/admin/site/edit)
我打电话:
<g:link mapping="admin_user" action='create' class="create" >New User</g:link>
但它的产生
/admin/site/create
基本上忽略了我的映射参数。我做错了什么帮忙?
答案 0 :(得分:0)
这种映射似乎没问题。我在Grails v2.0.4环境中做到了。
<g:link mapping="admin_user" action='create' class="create" >New User</g:link>
生成一个指向:
的链接/admin/user/create
和
<g:link mapping="admin_user" action='create' class="create" id="3">New User</g:link>
产生
/admin/user/create/3
您可以检查UrlMapping.groovy是否在正确的位置,或者您采用的Grails版本的文档。
答案 1 :(得分:0)
所以我最终得到了这个问题,这是一个两个url映射冲突的问题。
name 'admin_user' :"/admin/user/$action?/$id?"(controller:'userAdmin')
"/$controller/$action?/$id?"()
忽略了第一个并且总是使用第二个。我最终不得不放弃使用管理员前缀,实际上使用/admin/userAdmin/
我定义了
"/admin/$controller/$action?/$id?"()
然后使用createLink with controller ='userAdmin'。
每当我需要指向/ user / xxx的链接时,我都明确定义了它。
屁股上的巨大痛苦....
答案 2 :(得分:-1)
看起来您没有正确创建或使用命名映射。您尝试同时使用命名映射和action
,但操作表单优先,这就是您最终获得/controller/action
链接的原因。基于docs,您需要为您的操作设置一个特定的命名映射,它看起来更像是:
name createAdminUser: "/admin/user/create" {
controller = 'userAdmin'
}
您仍然可以通过$id?
传递params="[name: value]"
等命名参数(对于创建似乎没有意义)。
在您的视图中使用它,如:
<g:link mapping="createAdminUser" class="create">New User</g:link>