将主菜单中的URL映射到每个页面

时间:2014-05-19 14:41:33

标签: grails grails-2.0 url-mapping

我在我的grails 2.3.4项目中使用了spring securityspring securit ui

我正在将我的域contact替换为视图。我还有一个.gsp页面没有折叠。

我主要菜单中的链接看起来像是:

<li><a href="pricing">Pricing</a></li>
<li><a href="contact/create">Contact</a></li>

这就是我的URLMappings

class UrlMappings {

    static mappings = {

        "/$controller/$action?/$id?(.${format})?"{
            constraints {
                // apply constraints here
            }
        }

        "/private/$controller/$action?/$id?(.${format})?"{
            constraints {
                // apply constraints here
            }
        }

        "/"(view:"/index")
        "/pricing"(view:"/pricing")
        "/private/dashboard"(view:"/private/dashboard")
        "/contact/create"(view:"/contact/create")
        "500"(view:'/error')

    }
}

我的问题是,当我在我的主页/使用这两个链接时,一切正常。但是从5432:localhost/TestApp/pricing使用它们我得到了链接5432:localhost/TestApp/pricing/contact/create 哪个不可用。如果我使用<li><a href="../contact/create">Contact</a></li>,我将转到5432:localhost/contact/create,这也是不可用的。如何从每个页面转到contact/create

感谢您的回复!

1 个答案:

答案 0 :(得分:1)

最简单,最安全的方法是

<li><g:link uri="/contact/create">Contact</g:link></li>

g:link代码中的其他属性会传递到生成的a代码,但id除外 - 您需要使用elementId代替id 1}}被视为链接生成的参数(controller / action / id)

<li><g:link uri="/contact/create" class="nav" elementId="contactlink">Contact</g:link></li>

会变成

<li><a href="/TestApp/contact/create" class="nav" id="contactlink">Contact</a></li>

(其中/TestApp是应用程序上下文路径 - 如果您在不同的上下文路径部署应用程序,则链接将更改为匹配)。