使用JSP获取当前页面节点



我在做一个语言选择器,允许在英语和法语之间切换,应用程序在Jahia上。

我想从我的组件languagePickerjsp上的页面获得[j:fullpath],但我找不到获得它的方法。我需要当前页面的j:fullpath,当前页面实际上是..../home/html,但$(currentNode.path)回答我:

/modules/template/02.02.01.10-SNAPSHOT/templates/base/navbar2/navbarlinks-lang

但是我想要像:"/sites/services/home"这样的东西,这是我的主页的实际j:全路径。在这个节点下,有一个"VanityUrlMapping",在2个节点下,每种语言一个。

在每个页面下都有一个vanityUrlmapping,那么如何在JSP中获得这些页面的j:fullpath呢?

谢谢

如果您的组件存储在"正常区域"(不是绝对区域)下,您可以向上查看JCR,直到找到类型为"jnt:page"的节点。这可以使用以下标签库轻松完成:http://downloads.jahia.com/downloads/jahia/digitalfactory7.0.0/digital-factory-taglib-7.0.0.0-tlddoc/jcr/getParentOfType.fn.html

如果您尝试为Jahia实现自定义语言切换器,您可能应该基于默认的Jahia语言切换组件构建自定义视图:

https://github.com/Jahia/default/blob/master/src/main/resources/jnt_languageSwitcher/html/languageSwitcher.jsp

我认为${renderContext.mainResouce.node.path}是你正在寻找的。

我不认为j:fullpath会考虑到虚荣url。我不怎么用这些

@peetsnack是对的,你必须使用${renderContext.mainResource。获取与当前节点(此处为"navbarlink"节点)相关联的"mainResource"(在大多数情况下=包含"page")

获得一个正确的(外部)url,与虚荣url,正确的服务器名/方案…,最简单的是直接使用this:{renderContext.mainResource.node.url}

下面是一个完整的例子:

   <%--Retrieve the parent page--%>
   <c:set var="parentPageUrl" value="${renderContext.mainResource.node.url}"/>
   <%-- for correct url encoding --%>
   <c:url var="parentPageUrl" value="${parentPageUrl}"/>
   <%-- if you need absolute url: --%> 
   <c:set var="parentPageUrl" value="${url.server}${parentPageUrl}"/>

雷:下面两段代码将生成相同的URL:

<c:url value="${contentNode.url}" />
<c:url value="${url.base}${node.path}.html" />

来源:https://academy.jahia.com/files/live/sites/academy/files/documentation/training/TR7_Basic-Developer_EN_V1.5.pdf

最新更新