2014-07-09 33 views

Odpowiedz

25

To zależy od wersji Sling:

Chusta> = 2.3.0 (od CQ 5.6)

Dostosować swój zasób do ModifiableValueMap, wykorzystać swoją metodę put i zobowiązać resolwer zasobu:

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

chusta < 2.3.0 (CQ 5,5 włącznie)

Dostosować swój zasób do PersistableValueMap, wykorzystać swoje put i save metod:

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

JCR API

Można również dostosować zasób do Node i użyć JCR API do zmiany własności. Jednak dobrze jest trzymać się jednej warstwy abstrakcji iw tym przypadku jakoś przełamujemy abstrakcję Resource dostarczoną przez Sling.

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

Nie działa w publikowaniu. Ale jeśli użytkownik zaloguje się as admin to zadziała.

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

Wielu deweloperów nie lubi używać numeru Node API. Możesz także użyć API ValueMap i ModifiableValueMap do odczytu i aktualizacji właściwości.

odczytać wartość poprzez ValueMap

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

Zapis/Modyfikowanie własności poprzez ModifiableValueMap

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