Saving Data in JCR Node, what am I doing wrong?

為{幸葍}努か 提交于 2019-12-24 11:27:06

问题


I have created and deployed a bundle(Servlet) successfully that accepts username and password from user, now I want to save it in JCR Repository under /content/mydata/ I am getting Exception

java.lang.IllegalArgumentException: relPath is not a relative path: {}  {}oliver

Here is my code

  public class CustomerJCRAccessImp implements CustomerService {
        @Reference
        protected SlingRepository repository;

    protected static final Logger log = LoggerFactory.getLogger(CustomerJCRAccessImp.class);

    public void insertData(String username, String password) throws Exception {

        log.error("Username ::"+username+" Password ::"+password);
        log.error("XXX:: Inside the Service Method");
        Session session=    repository.loginAdministrative(null);
        Node node= session.getRootNode();
        Node contentNode = node.getNode("content");
        //node.i
        Node  myAppNode = contentNode.getNode("myApp");
        log.error("THE VALUE OF myApp NODE ::"+myAppNode);


        Node user = myAppNode.addNode("/"+username);
        user.setProperty("Roll No", "1");
        user.setProperty("Age", "10");
        user.setPrimaryType("nt:unstructured");

        session.save();
        session.logout();




    }
    protected void bindRepository(SlingRepository repository) {
        this.repository = repository; 
    }
}

I have done this by referring this link http://helpx.adobe.com/experience-manager/using/persisting-cq-data-java-content.html Thanks in Advance.


回答1:


The relative path parameter for the addNode() method shouldn't start with a "/". Try

Node user = videojetNode.addNode(username);

Though i agree that the term "relPath" in the docs is quite misleading, the relPath should either be the name of the node you would like to create under the current node or should start with the name of the child node and contains the relative path to the target node under which you want to create your node.

For example. In case the current node is content and you have the following tree

/
|_content
    |_x
       |_y

and if you wish to add a node called z as a child of y, then the relPath can be specified as

Node myNode = contentNode.addNode("x/y/z");

Note : A PathNotFoundException will be thrown in case any of the intermediary nodes are not available



来源:https://stackoverflow.com/questions/22828484/saving-data-in-jcr-node-what-am-i-doing-wrong

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!