Content management system CQ5 CRX JCR-节点迭代-如何重命名节点?
当使用ApacheSling和CRX/CQ5以及JCR等时 是否可以迭代JCR中的CQ5页面节点并重命名页面 我目前有一个脚本,可以更改特定路径上所有子页面的属性 我正在拼命寻找一种方法,使用NodeInterator和Node类在特定路径上重命名每个页面(不仅是标题和任意属性,还包括形成路径的名称) 例如:Content management system CQ5 CRX JCR-节点迭代-如何重命名节点?,content-management-system,aem,jcr,sling,Content Management System,Aem,Jcr,Sling,当使用ApacheSling和CRX/CQ5以及JCR等时 是否可以迭代JCR中的CQ5页面节点并重命名页面 我目前有一个脚本,可以更改特定路径上所有子页面的属性 我正在拼命寻找一种方法,使用NodeInterator和Node类在特定路径上重命名每个页面(不仅是标题和任意属性,还包括形成路径的名称) 例如: -content/xproject/shared/cars/a/abegro-assam -content/xproject/shared/cars/m/motofuel-iss 我想做
-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堆栈中找到此功能的地方,因为这将非常有用
我知道我可能能够适应()该节点以外的其他类-但我非常不确定如何继续。要重命名JCR节点,请将它们移动到不同的路径,可以使用需要save()调用的Session.move(…)或立即执行的Workspace.move(…)
我不确定这些是否以及如何干扰当前节点运算符-如果有问题,您可以使用迭代将要重命名的节点的路径添加到列表中,然后在节点运算符之外的列表中迭代以重命名节点。要重命名JCR节点,请将它们移动到其他路径,您可以使用需要save()调用的Session.move(…)或立即执行操作的Workspace.move(…)
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();
}
我不确定这些是否以及如何干扰当前的NodeIterator—如果有问题,您可以使用迭代将要重命名的节点的路径添加到列表中,然后在NodeIterator之外的列表上迭代以重命名节点
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();
}