使用Apache Sling和CRX / CQ5和JCR等时......
是否可以迭代JCR中的CQ5页面节点并重命名页面。
我目前有一个脚本可以更改特定路径下所有子页面中的属性。
我正在拼命寻找一种方法来使用NodeIterator和Node类来重命名特定路径中的每个页面(不仅是标题和任意属性,还有构成路径的名称)。
示例:
-content/xproject/shared/cars/a/abegro-assam
-content/xproject/shared/cars/m/motofuel-iss
我想做一些相当于:
的事情while(cars.hasNext()) {
Node node = cars.nextNode();
//this is the functionality I want somehow...
node.setName("some-other-name");
//similar to how we would set JCR properties
node.setProperty("someProperty", "someValue");
}
请告知我在CQ5 / Sling / Apache / CRX堆栈中可以找到此功能的地方,因为这将非常有用。
我知道我可以适应其他一些节点的其他类 - 但我非常不确定如何继续。
答案 0 :(得分:4)
要重命名JCR节点,您可以将它们移动到另一个路径,您可以使用需要save()调用的Session.move(...)或立即执行的Workspace.move(...)。 p>
我不确定这些是否以及如何干扰当前的NodeIterator - 如果遇到问题,您可以使用迭代来添加要重命名为List的节点的路径,然后迭代在NodeIterator外部列出以重命名节点。
答案 1 :(得分:0)
void rename(Node node, String newName) throws RepositoryException
{
node.getSession().move(node.getPath(), node.getParent().getPath() + "/" + newName);
// Don't forget - not necessarily here at this place:
// node.getSession().save();
}