2014-07-09 20 views

Antwort

25

Es hängt von der Riemen-Version:

Sling> = 2.3.0 (seit CQ 5,6)

Passen Sie Ihre Ressource ModifiableValueMap, seine put Methode verwenden und die Ressource Resolver begehen:

ModifiableValueMap map = resource.adaptTo(ModifiableValueMap.class); 
map.put("property", "value"); 
resource.getResourceResolver().commit(); 

Sling < 2.3.0 (CQ 5.5 und früher)

Passen Sie Ihre Ressource PersistableValueMap, verwenden seine put und save Methoden:

PersistableValueMap map = resource.adaptTo(PersistableValueMap.class); 
map.put("property", "value"); 
map.save(); 

JCR API

Sie können auch auf die Ressource Node und verwenden Sie die JCR API anzupassen Eigenschaft zu ändern. Es ist jedoch eine gute Idee, bei einer Abstraktionsschicht zu bleiben, und in diesem Fall brechen wir irgendwie die von Sling bereitgestellte Abstraktion Resource.

Node node = resource.adaptTo(Node.class); 
node.setProperty("property", "value"); 
node.getSession().save(); 
1

Es funktioniert nicht in veröffentlichen. Aber wenn Benutzer angemeldet as admin wird es funktionieren.

ModifiableValueMap map = resource.adaptTo(ModifiableValueMap.class); 
map.put("property", "value"); 
resource.getResourceResolver().commit(); 
0

So viele Entwickler sind nicht gerne mit Node API. Sie können auch ValueMap- und ModifableValueMap-APIs zum Lesen bzw. Aktualisieren von Eigenschaften verwenden.

lesen Wert durch ValueMap

ValueMap valueMap = resource.getValueMap(); 
valueMap.get("yourProperty", String.class); 

Schreib-/Eigentum durch ModifiableValueMap ändern

ModifiableValueMap modifiableValueMap = resource.adaptTo(ModifiableValueMap.class); 
modifiableValueMap.put("NewProperty", "Your Value"); //write 
modifiableValueMap.put("OldProperty", "Updated Value"); // Modify 
Verwandte Themen