我正在使用Jahia Digital Experience Manager 7.1.2。
如何在编辑模式下live
显示工作区中的数据(在来自JSP的JSTL中)?
细节 :
我需要在编辑模式下在页面中显示一些数据。问题是数据是用户提交的内容,仅存储在 JCRlive
工作空间中(不存储在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
工作区中,因此在编辑模式下不会显示任何内容。
使用 scriptlet 我可以获得实时内容:
<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 scriptlet 中(或者更好地使用 taglib)或 groovy 中完成,但有没有办法在纯 JSTL 中做到这一点?