Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AEM pathfield允许仅选择子页面_Aem_Aem 6_Aem Touch Ui - Fatal编程技术网

AEM pathfield允许仅选择子页面

AEM pathfield允许仅选择子页面,aem,aem-6,aem-touch-ui,Aem,Aem 6,Aem Touch Ui,我有一个要求,AEM pathfield组件将只显示子级(cq:Page) )选项选择器中当前节点(cq:Page)的资源/节点。我浏览了文档,不确定过滤器选项是否有用 @Component( service = Predicate.class, property = { "predicate.name= myPredicateName" } ) public class MyPredic

我有一个要求,AEM pathfield组件将只显示子级(cq:Page) )选项选择器中当前节点(cq:Page)的资源/节点。我浏览了文档,不确定过滤器选项是否有用

@Component(
        service = Predicate.class,
        property = {
                "predicate.name= myPredicateName"
        }
    )
public class MyPredicate extends AbstractNodePredicate {
    private static final LocalisedLogger LOG = LocalisedLoggerFactory.getLogger(MyPredicate.class);

    @Override
    public boolean evaluate(final Node node) {
        LOG.log(Messages.DEBUG, "testing" + node.toString());
        try {
            return isInPredicate(node);
        } catch (RepositoryException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return false;
    }

    private boolean isInPredicate(final Node node) throws RepositoryException {
        if (node.hasProperty("jcr:content/dog")) {
            return true;
        }
        return false;
    }
}
content.xml

<path
                                                        jcr:primaryType="nt:unstructured"
                                                        sling:resourceType="granite/ui/components/coral/foundation/form/pathfield"
                                                        fieldLabel="Page Path"
                                                        predicate="[myPredicateName]"
                                                        emptyText="Select the carousels page"
                                                        name="./carouselsPagePath"
                                                        forceSelection="{Boolean}true"
                                                        required="{Boolean}true"/>


应该可以通过扩展
com.day.cq.commons.predicate.AbstractNodePredicate来实现您自己的谓词。我至少从AEM 6.3开始就没有使用过它,但它应该仍然可以工作。请看一下我在这个问题中发布的代码片段,不幸的是,仅选择组件所在节点上的子节点可能很棘手。我理解这个接口的方式是,它作为一个访问者,在遍历内容树时在每个
节点上运行。这是有道理的。知道如何在pathfield组件中使用该谓词吗?因为在cq对话xml中添加predicate=“myPredicateName”似乎不起作用。已经有一段时间了,但我认为该属性需要一个列表。试试
predicate=“[myPredicateName]”
运气不好。我已经在问题中添加了代码。应该可以通过扩展
com.day.cq.commons.predicate.AbstractNodePredicate
来实现您自己的谓词。我至少从AEM 6.3开始就没有使用过它,但它应该仍然可以工作。请看一下我在这个问题中发布的代码片段,不幸的是,仅选择组件所在节点上的子节点可能很棘手。我理解这个接口的方式是,它作为一个访问者,在遍历内容树时在每个
节点上运行。这是有道理的。知道如何在pathfield组件中使用该谓词吗?因为在cq对话xml中添加predicate=“myPredicateName”似乎不起作用。已经有一段时间了,但我认为该属性需要一个列表。试试
predicate=“[myPredicateName]”
运气不好。我已将代码添加到问题中。