3

我希望得到当前 url 减去当前引用的文件名。解决方案是在 JSP 还是 CQ5 中并不重要。但是,我正在尝试更多地使用后者来习惯它。

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

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

3 回答 3

6

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

/content/mywebsite/english/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>
于 2012-05-11T19:46:22.683 回答
6

一个更简单的方法。

您可以使用 currentPage 对象来获取父 Page。

代码看起来像这样

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

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

<%@include file="/libs/foundation/global.jsp"%>
于 2012-05-16T17:45:26.087 回答
-1

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

于 2012-05-08T16:30:18.317 回答