2 回答

TA貢獻(xiàn)1898條經(jīng)驗 獲得超8個贊
據(jù)我所知,您希望一種方法來命令一個命名的子級成為列表中的第一個。cq:Page
這是可能的,因為 cq:Page 是一個可排序的節(jié)點(diǎn)。否則,這是不可能的。您可以在CRX資源管理器中檢查任何節(jié)點(diǎn)類型。
我認(rèn)為添加有關(guān)JSON的一點(diǎn)會使問題復(fù)雜化。您只需要一個簡單的方法,如下所示:
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);
}
}
你可能應(yīng)該稍微清理一下,但這是使用Node#orderBefore的一般想法。

TA貢獻(xiàn)2019條經(jīng)驗 獲得超9個贊
這可能會有所幫助 -
從父節(jié)點(diǎn)獲取子節(jié)點(diǎn)。(你會得到“迭代器”將其轉(zhuǎn)換為此處列表 - 將迭代器轉(zhuǎn)換為數(shù)組列表)
立即刪除所有子節(jié)點(diǎn)。并保留上述列表的備份。循環(huán)訪問列表,確定要首先放置的節(jié)點(diǎn)(通過標(biāo)題或其他一些屬性)將其添加到單獨(dú)的集合(LinkedHashSet-以保持順序)。
現(xiàn)在,在上面的集合中的特定節(jié)點(diǎn)之后,以相同的順序添加剩余的項目/節(jié)點(diǎn)。(您可能需要再次循環(huán)訪問)
現(xiàn)在,此集具有節(jié)點(diǎn)/資源,按您想要的順序排列,迭代,創(chuàng)建節(jié)點(diǎn)并保存更改。
添加回答
舉報