07-16-2019 10:36 AM
i am passing node from UI to Back end to fetch node property based on node id and set property value .
String nodeId = req.getParameter(ID);
logger.info(nodeId);
NodeRef node = serviceRegistry.getNodeService().getNodeRef(Long.valueOf(nodeId));
if(node!= null) {
serviceRegistry.getNodeService().setProperty(node, NOTIFICATION_IS_EMAIL_SENT, true);
}
Is it correct ?
07-16-2019 12:32 PM
Its correct, but better to wrap as system user to avoid any permission issues. Refer the below code sample:
String nodeId = request.getParamater("nodeId"); //You can get the param from request for example
if (StringUtils.isNumeric(nodeId)) {
final NodeRef nodeReference = AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<NodeRef>() {
@Override
public NodeRef doWork() {
return nodeService.getNodeRef(Long.valueOf(nodeId));
}
}, AuthenticationUtil.getSystemUserName());
if (nodeReference !=null){
//Get all properties from the node
final Map<QName, Serializable> properties = nodeService.getProperties(nodeReference);
//OR
//Get A property from the node. Example: ContentModel.PROP_TITLE
final QName aProp = nodeService.getProperty(nodeReference, propQName);
//OR
nodeService.setProperty(actionedUponNodeRef, propQName, "A value");
}
}
Explore our Alfresco products with the links below. Use labels to filter content by product module.