在JCR节点保存数据,我究竟做错了什么?(Saving Data in JCR Node, what

2019-10-19 17:40发布

我已经创建并部署了一个包(Servlet的)成功接受来自用户的用户名和密码,现在我想将它保存在JCR库在/内容/ MYDATA /我得到异常

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

这里是我的代码

  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; 
    }
}

我已经通过参考这个链接来实现这个http://helpx.adobe.com/experience-manager/using/persisting-cq-data-java-content.html在此先感谢。

Answer 1:

为相对路径参数ADDNODE()方法不应该以“/”开头。 尝试

Node user = videojetNode.addNode(username);

虽然我同意,在该文档中的术语“relPath”是非常容易引起误解的relPath要么是节点的名称,你想在当前节点下创建或应与子节点的名称开始,并包含相对路径到目标节点要在其下创建您的节点。

例如。 如果当前节点是内容和你有下面的树

/
|_content
    |_x
       |_y

如果你想添加一个名为将z作为y的子节点,那么relPath可以被指定为

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

PathNotFoundException的情况下将抛出任何中间节点不可用



文章来源: Saving Data in JCR Node, what am I doing wrong?
标签: java aem jcr sling