Я работал с итератором для перечисления и обхода дочерних узлов, и я получаю это аномальное поведение, когда итератор перечисляет узлы в разном порядке каждый раз. Мне нужно перебирать узлы, поскольку они присутствуют в crx / de. Есть ли способ сделать это, чтобы контролировать порядок листинга!
Map<String, String> map = new HashMap<String, String>();
map.put("path", getResource().getPath());
map.put("1_property", "sling:resourceType");
map.put("1_property.operation", "equals");
map.put("1_property.value", "/path/to/some/node");
QueryBuilder queryBuilder =
getResourceResolver().adaptTo(QueryBuilder.class);
Query query = queryBuilder.createQuery(PredicateGroup.create(map),
getResourceResolver().adaptTo(Session.class));
SearchResult result = query.getResult();
В итераторе ниже, что я получаю Resource next
- это узлы ресурсов в некотором случайном порядке.
Iterator<Resource> resources = result.getResources();
while (resources.hasNext()) {
Resource next = resources.next();
//The operations
}
Он должен повторяться, поскольку он присутствует в crx, вместо этого он принимает заказ эксклюзивных ящиков_3, эксклюзивных ящиков__1, эксклюзивных ящиков__2.