亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以編程方式排列 aem 6.4 中的內容

以編程方式排列 aem 6.4 中的內容

暮色呼如 2022-08-17 17:06:30
每個人 都。我是新接觸 .我正在使用 .我的任務是根據 JSON 文件的內容以編程方式對 in 的內容進行排序。JSON 文件的內容應設置為初始子項,而不是按其創建日期排序的子項。aemaem 6.4cq:projectaem這是我的.如果子 2 是 JSON 文件中指示的子 2,則它應該是第一個顯示的子 2。JSON 文件的內容只是一個子級的名稱,因此即使有 10 個子級,JSON 文件的內容也應始終是列表中的第一個子項。cq:page我花了幾個小時研究如何實現這一點,盡管我仍然找不到任何解決方案。關于我應該如何創建它的任何見解?謝謝!
查看完整描述

2 回答

?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

據我所知,您希望一種方法來命令一個命名的子級成為列表中的第一個。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的一般想法。


查看完整回答
反對 回復 2022-08-17
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

這可能會有所幫助 -

  1. 從父節點獲取子節點。(你會得到“迭代器”將其轉換為此處列表 - 將迭代器轉換為數組列表)

  2. 立即刪除所有子節點。并保留上述列表的備份。循環訪問列表,確定要首先放置的節點(通過標題或其他一些屬性)將其添加到單獨的集合(LinkedHashSet-以保持順序)。

  3. 現在,在上面的集合中的特定節點之后,以相同的順序添加剩余的項目/節點。(您可能需要再次循環訪問)

  4. 現在,此集具有節點/資源,按您想要的順序排列,迭代,創建節點并保存更改。


查看完整回答
反對 回復 2022-08-17
  • 2 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號