0

我正在做一个简单的 CQ 包含,其中包含我的组件。

<cq:include path="banner" resourceType="generic/components/content/banner" />

但我没有使用内容对话框,而是使用了设计对话框。我了解设计对话框属性都存储在/etc/designs/default 下。因此,如果我尝试访问当前节点对象 IE,请使用:

<%= currentNode.getName() %>

我得到一个空指针异常。为什么会这样?是不是还有一个设计对话框的节点。理想情况下,我正在尝试使用:

<%= currentNode.getIdentifier() %>

但发现我什至无法访问 currentNode 它只是抛出一个空指针。关于解决这个问题的任何提示,我是否需要通过设计对话框获取 currentNode 的另一条路线?任何帮助是极大的赞赏!

4

1 回答 1

4

currentNode对象包含请求的已解析 JCR 节点。由于您使用的是设计对话框,因此您将能够使用currentDesign对象访问已寻址资源的设计。为了访问存储在设计对话框中的属性,您可以使用currentStyle对象。

currentStyle.get("prop_name");
currentDesign.getId();

有关可用方法的信息,请参阅Style apiDesign api

由于我们有 currentStyle 对象,我们可以从中获取样式的路径,然后使用 Session 对象从该路径中获取节点。之后,您可以对其执行所有节点操作。

Session session = resourceResolver.adaptTo(Session.class);
if(session.nodeExists(currentStyle.getPath())) {
    Node node = session.getNode(currentStyle.getPath());
    node.getIdentifier();
}

希望这可以帮助。

于 2013-09-28T02:13:36.390 回答