我希望获取当前网址减去当前引用的文件名。解决方案是在JSP还是CQ5中并不重要。但是,我试图更多地使用后者来适应它。
我正在使用此文档,但它没有帮助。 CQ5 Docs。 我找到的示例检索完整的当前路径,但我不知道如何从中删除文件名:
<% Page containingPage = pageManager.getContainingPage(resourceResolver.getResource(currentNode.getPath()));
%>
<a href="<%=containingPage.getPath() %>.html">Profile</a>
答案 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)
。