以编程方式排列 aem 6.4 中的内容

每个人 都。我是新接触 .我正在使用 .我的任务是根据 JSON 文件的内容以编程方式对 in 的内容进行排序。JSON 文件的内容应设置为初始子项,而不是按其创建日期排序的子项。aemaem 6.4cq:projectaem

这是我的.如果子 2 是 JSON 文件中指示的子 2,则它应该是第一个显示的子 2。JSON 文件的内容只是一个子级的名称,因此即使有 10 个子级,JSON 文件的内容也应始终是列表中的第一个子项。cq:page

http://img3.mukewang.com/62fcafb00001c8e401530111.jpg

我花了几个小时研究如何实现这一点,尽管我仍然找不到任何解决方案。关于我应该如何创建它的任何见解?谢谢!


暮色呼如
浏览 180回答 2
2回答

汪汪一只猫

据我所知,您希望一种方法来命令一个命名的子级成为列表中的第一个。cq:Page这是可能的,因为 cq:Page 是一个可排序的节点。否则,这是不可能的。您可以在CRX资源管理器中检查任何节点类型。我认为添加有关JSON的一点会使问题复杂化。您只需要一个简单的方法,如下所示:private void orderAsFirstChild(String childName, Node parentNode) throws RepositoryException {    if (parentNode.hasNode(childName)) {      // find current first child name      String firstChildName = Optional.ofNullable(parentNode.getNodes())          .map(NodeIterator::nextNode)          .map(node -> {            try {              node.getName();            } catch (RepositoryException e) {              e.printStackTrace();            }            return (String) null;          }) //          .orElse(null);      parentNode.orderBefore(childName, firstChildName);    }  }你可能应该稍微清理一下,但这是使用Node#orderBefore的一般想法。

慕少森

这可能会有所帮助 -从父节点获取子节点。(你会得到“迭代器”将其转换为此处列表 - 将迭代器转换为数组列表)立即删除所有子节点。并保留上述列表的备份。循环访问列表,确定要首先放置的节点(通过标题或其他一些属性)将其添加到单独的集合(LinkedHashSet-以保持顺序)。现在,在上面的集合中的特定节点之后,以相同的顺序添加剩余的项目/节点。(您可能需要再次循环访问)现在,此集具有节点/资源,按您想要的顺序排列,迭代,创建节点并保存更改。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java