使用JSP

时间:2016-11-04 13:34:46

标签: java jsp jahia

我正在做一个语言选择器,允许在英语和法语之间进行更改,该应用程序在Jahia上。

我想从我的组件jsp的{​​{1}}页面中获取[j:fullpath],但我找不到方法得到它。我需要当前页面的languagePicker,当前页面实际上是.... / home / html,但j:fullpath回答我:

$(currentNode.path)

但我想要像:" / sites / services / home",这是我的主页上的实际j:fullpath。在这个节点下,有一个" VanityUrlMapping"并且再次出现2个节点,每种语言一个节点。

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

由于

3 个答案:

答案 0 :(得分:1)

如果您的组件存储在“正常区域”(非绝对区域)下,您可以上升JCR,直到找到类型为“jnt:page”的节点。这可以使用以下taglib轻松完成: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

答案 1 :(得分:0)

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

我不认为j:fullpath会考虑虚荣网址。但是,我不会那么做。

答案 2 :(得分:0)

@peetsnack是正确的,您必须使用$ {renderContext.mainResource.node}来获取与当前节点(此处为“ navbarlink”节点)关联的“ mainResource”(在大多数情况下,=包含“页面”)。

要获取带有虚假网址的正确(外部)网址,正确的服务器名称/方案...,最简单的方法是直接使用此网址: {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}"/>

REM: 以下两段代码将生成相同的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