如何设置资源属性

Tom*_*wek 12 jcr sling aem

我有一个Sling Resource对象.设置或更新其财产的最佳方式是什么?

Tom*_*wek 31

这取决于Sling版本:

吊索> = 2.3.0(自CQ 5.6起)

调整资源ModifiableValueMap,使用其put方法并提交资源解析器:

ModifiableValueMap map = resource.adaptTo(ModifiableValueMap.class);
map.put("property", "value");
resource.getResourceResolver().commit();
Run Code Online (Sandbox Code Playgroud)

吊带<2.3.0(CQ 5.5及更早版本)

调整您的资源PersistableValueMap,使用它putsave方法:

PersistableValueMap map = resource.adaptTo(PersistableValueMap.class);
map.put("property", "value");
map.save();
Run Code Online (Sandbox Code Playgroud)

JCR API

您还可以调整资源Node并使用JCR API来更改属性.但是,坚持一个抽象层是一个好主意,在这种情况下,我们以某种方式打破了ResourceSling提供的抽象.

Node node = resource.adaptTo(Node.class);
node.setProperty("property", "value");
node.getSession().save();
Run Code Online (Sandbox Code Playgroud)