2011-04-06 33 views
1

情况:在Grails 1.3.7中更改了URL映射吗?

说我有所谓的AccountController与展会,编辑和更新的一些动作的示例控制器。

在Grails URL Mappings中,我试图按照方法类型进行映射,例如, GET POST等等等等

然后,我有一个指向相应的动作,像这样的控制器链接:

<g:link controller="account" action="edit">Edit my account link</g:link> 

用的映射:

"/profile"  (controller: "account", action: "show") 
"/profile/edit" (controller: "account", action: [GET: "edit", POST: "update"]) 

这里的问题是链接生成的应该是使用映射进行查找,并使其看起来像“/ profile/edit”在生成的html页面中,但是该页面有“/ account/edit”根据映射不存在,所以点击时只会导致错误。

我都甚至试图的替代语法:

"/profile/edit" (controller: "account") { action = [GET: "edit", POST: "update"] } 

,但它仍然指向一个不存在的URL映射。

这是一个错误还是只是我有一个糟糕的一天?

回答

2

我不知道这个(使用HTTP方法的反向URL映射)是否在以前的Grails版本中工作,但我已经在1.3.7中再现了您的问题,我想出的唯一解决方案是使用named URL mappings 。使用它,你的标签是:

<g:link controller="account" action="edit" mapping="profileEditing"> 
    Edit my account link 
</g:link> 

和编辑映射将是:

name profileEditing: "/profile/edit" (controller: "account") { 
    action = [GET: "edit", POST: "update"] 
} 

问候。

+0

谢谢你。它肯定确实与早期版本一起工作。在“Graeme Rocher Grails权威指南”的第152页上,他们使用一个封闭的HTTP方法映射来显示第二个方法。 – pieterk 2011-04-06 16:03:00