我的cq5内容结构是......
Content
---mywebsite
------base
-----us
--- en
----pageOne
----pageTwo
----pageThree
----pageFour
----cq:content
----par
----pageFourNew
“pageFourNew”有大约500个属性。 现在我需要获取“pageFourNew”的所有属性并更新它们的值。
例如,如果我有:
property=prop1
value = prop1 value
我想value = value+"some string value append"
并将其保存在存储库中。
我想以编程方式执行此操作。
如果您有任何解决方案或想法,请分享。
答案 0 :(得分:1)
您可以使用PropertyIterator迭代节点api的所有属性,setProperty()方法来设置新值,并使用jcr会话来保持值以完成此操作。示例代码:
PropertyIterator propertyIterator = pageFourNew.getProperties();
while (propertyIterator.hasNext()) {
Property property = propertyIterator.nextProperty();
pageFourNew.setProperty(property.getName(),
property.getValue().getString() + "");
jcrSession.save();}
答案 1 :(得分:0)
您可以按照JCR级别的建议轻松完成此操作。但是根据CQ practices和blog
最好在Sling级别而不是JCR级别操作,以避免管理资源的开销。您可以使用下面的代码:
Resource resource = pageFourNew; // assuming you are getting sling resource properly
ModifiableValueMap valueMap = resource.adaptTo(ModifiableValueMap.class);
for(String key : valueMap.keySet()) {
String value = valueMap.get(key, String.class);
value = value + "additional texts";
valueMap.put(key, value);
}
resource.getResourceResolver().commit();
这是更清洁的方法。