2012-04-19 44 views
6

問題 -的Grails - URL映射/默認操作和流動

我注意到,一些應用程序我測試有另一種觀點認爲,從動作控制器提交,但是當該頁面呈現的/,而不是看到來電:

$控制器/ $頁

我看到:

$控制器/指數

這是與URL映射配置的問題?默認操作?只是好奇,因爲它似乎是映射到默認的URI而不是實際的操作。

視圖代碼:

<table> 
.. 
<g:actionSubmit class="stats" action="stats" value="View Stats"/> 
.. 
</table 

控制器:

def stats() { 

    def teamId = Team.get(params.id) 
    def allPlayers = Player.withCriteria { 
      eq('team', teamId) 
      and { 
       eq('isActive', true) 
      } 
    } 
    [allPlayers:allPlayers, teamId:params.id] 
} 

urlMapping中:

class UrlMappings { 

static mappings = { 
    "/$controller/$action?/$id?"{ 
     constraints { 
      // apply constraints here 
    } 
} 
} 

編輯

我實際他想出了它是什麼。這讓我更加困惑。

grails actionSubmit有一個綁定它的動作。這種形式只是一個正常的形式,沒有電話:

<g:form> 
<g:actionSubmit class="stats" action="stats" value="View Stats"/> 
<g:actionSubmit class="schedule" action="schedule" value="View Schedule"/> 
<g:form> 

所以默認情況下,形式重定向動作$控制器/索引。如果您在g:form標籤中添加一個動作調用,那麼這兩個按鈕將直接指向正確的頁面,但是現在URI將變爲$ controller/$ g:form_action。

我想我不明白actionSubmit的動作,如果需要g:form作爲包裝。

+0

http://jira.grails.org/browse/GRAILS-3086 – user82302124 2012-04-19 15:05:17

回答

4

是的,index是所有控制器的默認操作。所以如果你沒有指定一個,那就是你將登陸控制器的頁面。

對它們的website進行更詳細的討論。即,規則是:

  • 如果只有一個動作是本默認URI用於控制器映射到 該動作。
  • 如果你定義一個索引作用,這是當在URI /本書中沒有指定動作
  • 或者你可以用DefaultAction屬性已明確將其設置 處理請求的操作:

    靜態defaultAction的=「列表」

+0

感謝您的回答。問題雖然 - 使用actionSubmit從一個視圖調用去控制器中具有cooresponding視圖(命名爲相同的事情)的方法。爲什麼URI轉到$ controller/index而不是$ controller/method? – user82302124 2012-04-19 14:24:25

+0

嗯,不確定。你能發佈任何與你的行動有關的代碼嗎? – Igor 2012-04-19 14:30:12

+0

添加片段。統計信息頁面呈現正確。只是不是URI。 – user82302124 2012-04-19 14:40:57