在JSP或CQ5中获取URL减去当前文件名

时间:2012-05-08 16:08:24

标签: java jsp cq5

我希望获取当前网址减去当前引用的文件名。解决方案是在JSP还是CQ5中并不重要。但是,我试图更多地使用后者来适应它。

我正在使用此文档,但它没有帮助。 CQ5 Docs。 我找到的示例检索完整的当前路径,但我不知道如何从中删除文件名:

<% Page containingPage = pageManager.getContainingPage(resourceResolver.getResource(currentNode.getPath()));
%>
<a href="<%=containingPage.getPath() %>.html">Profile</a>

3 个答案:

答案 0 :(得分:6)

假设您正在访问以下资源URL。

/内容/ mywebsite /英语/ MYNODE

如果您当前的节点是“mynode”,并且您想要获取没有当前节点的url部分。

那么最简单的方法是在currentNode(mynode)上调用getParent()

因此,您可以像这样获得父母的路径。

currentNode.getParent()。getPath()会为您提供“/ content / mywebsite / english /”

完整代码:

    <% Page containingPage = pageManager.getContainingPage(resourceResolver.getResource(currentNode.getParent().getPath())); 
%>
<a href="<%=containingPage.getPath() %>.html">Profile</a>

答案 1 :(得分:6)

一种更简单的方法。

您可以使用currentPage对象获取父页面。

代码看起来像这样

<a href="<%=currentPage.getParent().getPath()%>.html">Profile</a>

如果您在使用此代码时遇到错误,请检查您是否在页面中包含了global.jsp文件。如下所示。

<%@include file="/libs/foundation/global.jsp"%>

答案 2 :(得分:-1)

我对CQ5一无所知,但是因为getPath()返回一个普通的Java字符串,我希望你可以把前缀加到最后一个斜杠,对于一个字符串s可以做到与s.substring(0, s.lastIndexOf('/')+1)。如果你必须将它变成单行,你可以containingPage.getPath().substring(0, containingPage.getPath().lastIndexOf('/')+1)