2015-03-26 1 views
0

J'essaie d'obtenir les propriétés de noeud dans CQ. Mais je ne suis pas en mesure d'obtenir les propriétés. Obtenir l'exception dit que ce n'est pas un chemin relatif.Problème lors de l'obtention des propriétés de noeud

Session session; 
Node root = session.getRootNode(); 
Node jcrContent = root.getNode("/content/moto/contact/jcr:content"); 
System.out.println("val:"+jcrContent.getProperty("jcr:title")); 

exception se est produite Not a relative path: /content/moto/contact/jcr:content

S'il vous plaît aidez-moi.

Répondre

0

Essayez

Node root = session.getRootNode(); 
Node jcrContent = root.getNode("content/moto/contact/jcr:content"); 

Le #getNode() attend un chemin relatif, alors que vous fournissiez un chemin absolu. D'où l'erreur, not a relative path.

1

Si vous utilisez CQ5, vous voudrez probablement utiliser l'API Sling au lieu du JCR sous-jacent. Vous pouvez utiliser le ResourceResolver à cet effet:

Resource resource=resourceResolver.getResource("/your/resource"); 
ValueMap props= resource.adaptTo(ValueMap.class) 
String title= props.get("jcr:title"); 

Le résolveur de ressources est disponible toujours par une demande Sling (slingRequest.getResourceResolver()). Si vous n'avez pas de requête disponible (comme dans un workflow), vous pouvez toujours en obtenir un, mais cela dépend de votre scénario

+0

+1 pour l'utilisation de ValueMap au lieu de l'API JCR dans AEM/CQ5. Juste un ajout à la réponse, assurez-vous, le ResourceResolver provenant de la demande Sling a "lire" l'accès au chemin du nœud i.e "/ content/moto/contact/jcr: contenu" dans la question. – Sabya