Aem 获取CQ5中的节点表单currenPage
我有一个组件需要从同一页上的另一个组件获取属性 有没有办法从Aem 获取CQ5中的节点表单currenPage,aem,jcr,Aem,Jcr,我有一个组件需要从同一页上的另一个组件获取属性 有没有办法从当前页面获取组件的节点对象 代码中提供了需要获取的节点的名称。假设您需要的节点位于页面/jcr:content/yournode: 页面对象有一个方法getContentResource(),默认情况下,该方法返回jcr:content资源节点。您还可以使用page.getContentResource(“yournode”)在jcr:content下面获取特定节点 如果您的节点出于某种原因与jcr:content同级(顺便说一句,它不
当前页面
获取组件的节点
对象
代码中提供了需要获取的节点的名称。假设您需要的节点位于
页面/jcr:content/yournode
:
页面
对象有一个方法getContentResource()
,默认情况下,该方法返回jcr:content
资源节点。您还可以使用page.getContentResource(“yournode”)
在jcr:content
下面获取特定节点
如果您的节点出于某种原因与jcr:content
同级(顺便说一句,它不应该如此),您可以使用resource.listChildren()
迭代资源的子节点
记住,这都是SlingAPI,所以您管理的是资源,而不是节点。您可以使用
resource.adapto(Node.class)
从资源中获取JCR节点。我想补充一点,如果要解决的问题需要分离关注点,则可以通过将请求委托给servlet以更干净的方式解决此问题-将视图与控制器逻辑分离。
使用下面的逻辑将验证器添加到表单中,该逻辑调用托管的servlet
var url = CQ.HTTP.addParameter(dialog.path + '.validator.json', 'value', value);
var result = CQ.HTTP.eval(url);
and in the servlet we access the node and its parents using below logic
final Node currentNode = request.getResource().adaptTo(Node.class);
try {
final Node par = currentNode.getParent();
final NodeIterator nodes = par.getNodes();
// get all form names for the current paragraph system
while (nodes.hasNext()) { //and the business logic
- 更多信息,请访问:
jcr:content
中的节点,这个方法稍微干净一些:
Node node = CurrentPage.getContentResource("COMPONENTNAME").adaptTo(Node.class);
开发人员应该在将资源调整到节点之前检查资源是否存在
现在我们有了一个节点,我们可以从该节点提取属性
String title = node.getProperty("jcr:title").getString();
通过这种方式,您可以获取组件的任何属性。如果您觉得有帮助,请向上投票