我有一个关于 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/