使用Sling API在JSP中创建节点

时间:2014-12-23 15:37:33

标签: java cq5 aem jackrabbit sling

我刚刚开始使用Sling Launchpad并掌握了选择器的基本概念等等,并且能够读取节点的内容。但是,我无法弄清楚如何创建新节点。

我的jackrabbit存储库中有一个JSP,当我使用Web浏览器访问它时,它正确处理。

我希望在加载页面时执行一个动作,在/ content / myappname树中创建一个新节点。

我该怎么做呢?我想我需要在我的代码中创建一个Session对象,并记录Session作为管理员用户,然后执行节点创建。我不确定在该范围内我可以使用哪些对象。

有人能为我提供一个如何在JSP中创建节点的快速代码示例吗?

1 个答案:

答案 0 :(得分:1)

您可以通过SlingRepsitory对象获取管理员 ## 会话。从会话中,您可以使用jack rabbit api创建节点。

<sling:defineObjects>标记公开了sling变量(您可以包含global.jsp,它会公开所有这些变量)。 Sling的getService()方法可用于获取SlingRepository的实例。

org.apache.sling.jcr.api.SlingRepository repos = sling.getService(SlingRepository.class);
javax.jcr.Session session = repos.loginAdministrative(null);
javax.jcr.Node root = session.getRootNode();
javax.jcr.Node newNode = root.addNode('content/myappname/newnode');

## 管理员会话旨在用于提供一般服务的捆绑包中,必须谨慎使用,并且仅在absolutely necessary时使用。它的缺点在互联网上有很好的记录,有alternatives。在可能的情况下,最好从请求中获取具有用户特定权限的会话