2011-04-06 66 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