我在我的grails 2.3.4
项目中使用了spring security
和spring 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
?
感谢您的回复!
答案 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
是应用程序上下文路径 - 如果您在不同的上下文路径部署应用程序,则链接将更改为匹配)。