重写控制器中默认操作的URL

时间:2010-08-12 17:44:52

标签: grails url-rewriting url-mapping grails-controller

我在Grails中重写URL时遇到了麻烦:

我有两个控制器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

任何人都可以帮我这么做吗?

2 个答案:

答案 0 :(得分:3)

尝试将 link 标记中的 action 参数指定为空格。

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

答案 1 :(得分: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>