2010-08-12 29 views
2

的默認操作:重寫URL中遇到麻煩重寫URL的Grails的控制器

我有2個控制器BlogControllerProjectsController每一個默認def index = { }和匹配視圖。

現在,當我創建了以下鏈接:

<g:link controller="blog">Blog</g:link> 
<g:link controller="projects">Projects</g:link> 

他們會轉換到http://localhost:8080/myapp/blog/indexhttp://localhost:8080/myapp/projects/index。但是希望他們(和所有其他控制器默認行動)沒有尾隨/index

任何人都可以幫助我做到這一點?

回答

3

嘗試在鏈接指定行動參數標記爲空格。

<g:link controller="projects" action=" ">Projects</g:link> 
+0

工程就像一個魅力,謝謝。 – Jasper 2010-08-13 17:45:07

1

使用a Named URL Mapping

添加到您的grails-app/conf/UrlMappings.groovy

name blog: "/blog" { 
      controller = "blog" 
      action = "index" 
    } 
    name projects: "/projects" { 
      controller = "projects" 
      action = "index" 
    } 

,改變你的鏈接,使用映射參數嘗試:

<g:link mapping="blog">Blog</g:link> 
<g:link mapping="projects">Projects</g:link> 
+0

這是有效的,但它不能很好地擴展。每個控制器都需要他自己的命名映射。 – Jasper 2010-08-12 19:46:10

+0

命名的映射實際上是過度的。如果您只是將/ blog的映射提供給適當的控制器/操作,則鏈接標記將正確重映射它。所以,「/ blog」(控制器:「博客」,行動:「索引」)是所有需要的。鏈接標記w/controller =「blog」action =「index」將正確映射回「/ blog」。 – tixxit 2010-12-16 20:18:36