我有两个问题:
1)通过使用Page name我做了Xpath Query,如下所示:
//element(*, cq:Page)
[
fn:name() = 'hello-world '
]
我也可以找到该页面(在crxde Lite中尝试并找到了正确的页面)。如何将QueryResult转换为页面类型?
2)将结果转换为Page类型后,如何检索jcr下的特定节点:此页面的内容?
我是CQ5的新手,所以我对现有的API没有很好的了解。任何帮助或指针都非常感谢。
答案 0 :(得分:2)
QueryResult
包含Node
的集合。这两个类都是JCR API的一部分。另一方面,Page
是CQ API的一部分。即使两个对象代表相同的物理事物,也没有直接的方法将Node
转换为Page
。您唯一能做的就是走Node
路径并使用此路径检索Page
:
PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
QueryResult result = ...;
NodeIterator nodes = result.getNodes();
while (nodes.hasNext()) {
Node node = nodes.nextNode();
Page page = pageManager.getPage(node.getPath());
// do anything you want with the Page
}
关于第二个问题 - 您可以使用Page#getContentResource(String)
方法从页面Resource
中抓取任何jcr:content
,例如:
Resource resource = page.getContentResource("parsys/text");
Resource
是Sling API的一部分。您可以使用Node
方法将其转换为adaptTo()
:
Node node = resource.adaptTo(Node.class);
但是,学习如何使用Sling API是一个好主意。对于初学者,您可以通过将资源调整为ValueMap
类来读取资源/节点属性:
ValueMap map = resource.adaptTo(ValueMap.class);
map.get("myProperty", ""); // the second argument is the default value
答案 1 :(得分:-2)
如果您询问JSP代码,请包含文件global.jsp
并通过属性(隐式对象)访问它:
String title = properties.get("title", ""); // title = node name