2016-04-07 7 views
0

ich einen benutzerdefinierten Aspekt eine Eigenschaft für Person-Datentyp erstellt haben, in contentModel.xml mitim Freien Update benutzerdefinierte Eigenschaft in Java-backed WebScript

<aspect name="cm:CustomAspect"> 
<title>CustomAspect</title> 
<properties> 

    <property name="cm:updateDate"> 
     <title>updateDate</title> 
     <type>d:date</type> 
    </property> 

</properties> 
</aspect> 



<type name="cm:person"> 
     <title>Person</title> 
    <mandatory-aspects> 
     <aspect>cm:CustomAspect</aspect> 
     <aspect>cm:auditable</aspect> 
    </mandatory-aspects> 
    </type> 

Ich möchte Java setzen WebScript der "updateDate" Eigentum gesichert. In Javascript-Skript würde ich tun: person.properties.updateDate = new Date();, aber ich weiß nicht, wie dies in Java-Webskript zu tun.

Ich benutze PersonService-Klasse, um das Update zu erreichen.

Map newUserProp = new HashMap(); 
newUserProp.put(QNAME_DATE_UPDATE, new Date()); 
personService.setPersonProperties(username, newUserProp); 

Wie kann ich das tun?

Antwort

1

Verwenden Sie die NodeService:

// member of your Java class 
private ServiceRegistry serviceRegistry; 

// in your method 
NodeService nodeService = serviceRegistry.getNodeService(); 
nodeService.setProperty(nodeRef, QNAME_DATE_UPDATE, new Date()); 
+0

Da das OP es für eine Person festlegen möchte, müssen Sie wahrscheinlich den Code hinzufügen, um den NodeRef der Person zuerst über den PersonService zu erhalten – Gagravarr

1
  • Person NodeRef holen.

  • Holen Sie sich alle seine Eigenschaften Karte.

  • Fügen Sie Ihre Eigenschaft in diese Karte ein und legen Sie diese Karte erneut im Benutzer fest.

    NodeRef userNodeRef = personService.getPerson(userLoginName); 
    Map<QName, Serializable> userPropertyMap = nodeService.getProperties(userNodeRef); 
             userPropertyMap.put(QNAME_DATE_UPDATE, new Date()); 
          personService().setPersonProperties(userLoginName, userPropertyMap); 
    

Hoffnung, das hilft. Vergessen Sie nicht, personservice und nodeservice in Ihre Kontextdatei zu injizieren, fügen Sie getetter setter für diese Dienste in Ihrer Spring Bean hinzu.