2014-07-09 33 views

risposta

25

Dipende dalla versione Sling:

Sling> = 2.3.0 (dal CQ 5,6)

adattare la vostra risorsa per ModifiableValueMap, utilizzare il suo metodo put e commettere il resolver risorsa:

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

Sling < 2.3.0 (CQ 5.5 e precedenti)

adattare la vostra risorsa per PersistableValueMap, utilizzare i suoi put e save metodi:

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

JCR API

Si può anche adattare la risorsa da Node e utilizzare il JCR API per modificare la proprietà. Tuttavia, è una buona idea attenersi a un livello di astrazione e in questo caso in qualche modo si interrompe l'astrazione Resource fornita da Sling.

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

Non funziona in pubblicazione. Ma se l'utente ha effettuato il login as admin, funzionerà.

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

Come molti sviluppatori non amano usare Node API. È inoltre possibile utilizzare le API ValueMap e ModifiableValueMap per leggere e aggiornare rispettivamente la proprietà.

Leggi valore attraverso ValueMap

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

di scrittura/modifica proprietà attraverso ModifiableValueMap

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