2016-05-06 1 views
0

Мы недавно обновили от AEM 5.6.1 до AEM 6.1, и наш определенный фрагмент кода, приведенный ниже, внезапно прекратил работу. Короче говоря, мы использовали API-интерфейс Node для получения дочерних узлов определенного узла, а затем обработки на нем, но в AEM 6.1 кажется, что метод getNodes() ничего не возвращает, и только getNode(), похоже, работает. Кто-нибудь еще сталкивался с тем же и имел какое-то решение для этого?Невозможно получить несколько узлов в AEM 6.1

if (jobAdNode.hasNode(PARSYS_NODE_REL_PATH)) { 
      Node parsysNode = jobAdNode.getNode(PARSYS_NODE_REL_PATH); 
      NodeIterator textNodeItr = parsysNode.getNodes("text"); // RETURNS NOTHING 
      Node textNode1 = parsysNode.getNode("text"); // RETURN THE EXISTING TEXT NODE 
      if (textNodeItr.getSize() > 0) { 
       Node textNode = textNodeItr.nextNode(); 
       if (textNode.hasProperty(TEXT_PROP)) { 
        resDescription.append(textNode.getProperty(TEXT_PROP).getString()); 
       } 
      } 
     } 

ответ

2

Итак, после долгих проб и испытаний, я расположен этот вопрос и хотели бы разместить здесь, в случае, если кто-то сталкивается с тем же самым. В коде, который я отправил выше, преступник эта линия:

if (textNodeItr.getSize() > 0) 

В parsysNode.getNodes («Текст»), метод возвращает итератор узлов, имеющих дочерние узлы, однако метод GETSIZE еще возвращает -1 и, следовательно, похоже, что никакие узлы не возвращаются. Посмотрите документацию метода getSize() here! , в котором говорится, что метод getSize может не возвращать размер во всех реализациях.

Я решил проблему, используя hasNext(), который в основном используется.