Java 获取url减去JSP或CQ5中的当前文件名

Java 获取url减去JSP或CQ5中的当前文件名,java,jsp,aem,Java,Jsp,Aem,我希望得到当前url减去当前引用的文件名。解决方案是用JSP还是用CQ5并不重要。然而,我正试图更多地使用后者来适应它 我正在使用此文档,但它没有帮助。 我找到的示例检索完整的当前路径,但我不知道如何从中删除文件名: <% Page containingPage = pageManager.getContainingPage(resourceResolver.getResource(currentNode.getPath())); %> <a href="<%=conta

我希望得到当前url减去当前引用的文件名。解决方案是用JSP还是用CQ5并不重要。然而,我正试图更多地使用后者来适应它

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

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


我对CQ5一无所知,但是由于
getPath()
返回一个普通的Java字符串,我希望您可以将前缀一直保留到最后一个斜杠,对于字符串
s
,可以使用
s.substring(0,s.lastIndexOf('/')+1)
完成。如果必须使其成为一行程序,则可以执行
containingPage.getPath().substring(0,containingPage.getPath().lastIndexOf('/')+1)

假设您正在访问以下资源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>

一种更简单的方法

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

代码如下所示

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

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

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


能否指定仅获取路径减去文件名的原因?谢谢!我在学习Java时,必须先深入到最深层,因此我对某些基本原理的掌握已经丢失。在处理CQ5(或一般的Sling)时,这不是一个好的解决方案-一些用例(特别是图像引用)中的“文件部分”实际上可以包括斜杠。这是一个比第一个稍微精细的答案。谢谢。我有全球范围的包括。至于你的快捷方式,我还是要实例化currentPage;初始值是什么?如果您已经包含了global.jsp,那么您就不需要实例化currentPage。currentPage是一个隐式对象,当您包含global.jsp时,您将自动获得它,它的默认值是当前页面对象。是的,正如rao_555所指出的,如果您在使用这段代码的jsp文件中包含global.jsp,那么您无需再次实例化它。currentPage对象包含当前正在服务的网页的句柄。