java - 如何使用 sling servlet 为现有节点创建新属性?

标签 java aem sling

我有一个关于 Sling Servlet 的作业。在这里,在我的应用程序中,我必须在与登录用户相对应的节点中创建一个属性,并向该属性添加一个 boolean 值。这必须在用户第一次登录时动态完成。后续登录时,必须获取此属性进行验证。

为了获取资源,我编写了以下代码行。

ResourceResolver resourceResolver = slingRequest.getResourceResolver(); 资源 Activity Resource = resourceResolver.getResource("/home/users/V/VSukz/profile"); ValueMap CampaignProperties = CampaignResource.adaptTo(ValueMap.class); String title = CampaignProperties.get("类别", "");

我无法为 Post 执行此操作。我在这部分需要帮助。

最佳答案

这里是示例,如何获取 javax.jcr.Session 对象、如何查找 Node 对象以及如何向节点添加属性。

public class ExampleServlet extends SlingAllMethodsServlet {

    @Reference(policy=ReferencePolicy.DYNAMIC, cardinality=ReferenceCardinality.MANDATORY_UNARY)
    protected SlingRepository repository;

    @Override
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        Session session= null;
        String path = "/path/to/your/node";
        try {
            session = repository.loginService(null, null); // this method requires additional setting in Apache Sling Service User Mapper Service. (AEM6)
            //session = repository.loginAdministrative(repository.getDefaultWorkspace()); //this method is deprecated (it was used in previous versions)
            Node node = session.getNode(path);
            node.setProperty("propertyName", "propertyValue");
            session.save();
        } catch (Exception e) {
            log.error(ExceptionUtils.getStackTrace(e));
            e.printStackTrace();
        } finally {
            if(session != null) session.logout();
        }

    }

    @Override
    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException{
        doGet(request,response);
    }
}

关于java - 如何使用 sling servlet 为现有节点创建新属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28605013/

相关文章:

java - @Transactional 无法在 Spring Boot 中与 CrudRepository 一起工作

单击绘图区域时 Java 背景发生变化

java - Google App Engine 1.6.4 上的 Guice 启动时间

aem - 表情表达选项

mysql - 在 CQ5 中,如何连接外部数据库代替 JCR?

java - Sling 资源与节点

java - WAR 安装错误的编码解决方案(Websphere Portal 6.0)?

aem - 如何在 AEM 中使用 Sightly 检查子组件资源是否存在?

java - 将 OSGI 包与 Maven 一起使用时如何隐藏嵌入式依赖项?

多个路径上的 aem cq 监听器