我有以下标记,需要将其重定向到以下地址localhost/signup
。
如果我在localhost/users/profile/view
这样的深层地址,请点击此链接进入
localhost/users/profile/signup
。
如何强制它从任何深度的任何地址重定向到localhost/signup
而不将localhost
添加到其地址的开头?那可能吗?
<a href="<s:url action="../signup"/>">Sign Up</a>
答案 0 :(得分:3)
我首选的方法是永远不会硬编码斜杠前缀(/signup
)或相对(../signup
),而是使用<c:set>
对您的上下文根路径进行软编码:
<c:set var="root" value="${pageContext.request.contextPath}"/>
并将其用作任何内部网址的前缀
<a href="${root}/signup"/>Sign Up</a>
因此,即使深度发生变化,也可以保证引用正确的上下文路径
Host/Context Path: http://localhost/blah Link: http://localhost/blah/signup
Host/Context Path: http://localhost/mycoolco/secret/blah Link: http://localhost/mycoolco/secret/blah/signup
答案 1 :(得分:1)
如何尝试:
<a href="<s:url action="~/signup"/>">Sign Up</a>
上面似乎在ASP.NET中工作,我相信它也应该在JSP中工作!!
简单的说,当您放置../SomeMethod
时,服务器会在单击链接的同一目录中查找SomeMethod
。