Я использую Jahia Digital Experience Manager 7.1.2 .
Как отобразить данные из live
рабочего пространства в режиме редактирования (в JSTL из JSP )?
Подробности:
Мне нужно отобразить некоторые данные на странице в режиме редактирования. Проблема заключается в том, что данные представляют собой пользовательский контент, хранящийся только в рабочей области JCR live
(не хранится в рабочей области default
, используемой в режиме редактирования).
Обычно я отображаю данные следующим образом (отлично подходит для отображения default
данных рабочего пространства в режиме редактирования и live
данных в онлайн-режиме):
<%@ taglib prefix="jcr" uri="http://www.jahia.org/tags/jcr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--@elvariable id="currentNode" type="org.jahia.services.content.JCRNodeWrapper"--%>
<c:forEach items="${jcr:getChildrenOfType(currentNode,'unt:formResponse')}" var="resp">
${resp.name}
</c:forEach>
Но, конечно, поскольку мои данные существуют только в live
рабочей области, в режиме редактирования ничего не отображается.
Используя скриптлет, я могу получить живой контент:
<c:set var="currentNodeId" value="${currentNode.identifier}"/>
<c:set var="locale" value="${renderContext.mainResourceLocale}"/>
<%
JCRNodeWrapper responsesNode = JCRSessionFactory.getInstance().getCurrentUserSession("live", locale).getNodeByIdentifier(currentNodeId);
for (JCRNodeWrapper resp : responsesNode.getNodes()) {
log.info(resp.getName());
}
pageContext.setAttribute("responsesNode", responsesNode);
%>
<c:forEach items="${jcr:getChildrenOfType(responsesNode,'unt:formResponse')}" var="resp">
${resp.name}
</c:forEach>
Я также могу сделать это в полном java скриптлете (или лучше с taglib) или в groovy, но есть ли способ сделать это в чистом JSTL?