我已经成功创建并部署了一个接受用户名和密码的bundle(Servlet),现在我想将其保存在/ content / mydata /下的JCR存储库中
我收到异常

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
提前致谢。

最佳答案

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

Node user = videojetNode.addNode(username);


尽管我同意文档中的“ relPath”一词具有误导性,但relPath应该是您要在当前节点下创建的节点的名称,或者应该以子节点的名称开头并包含相对路径到要在其下创建节点的目标节点。

例如。如果当前节点是内容,并且您具有以下树

/
|_content
    |_x
       |_y


如果您希望添加一个名为z的节点作为y的子节点,则可以将relPath指定为

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


注意:如果任何中间节点不可用,将抛出PathNotFoundException

09-13 06:24