【发布时间】:2020-01-30 12:32:16
【问题描述】:
我正在尝试以编程方式从 json 字符串中提取数据,转换为字符串数组并将其作为 cq:tags 属性和相应的值添加到节点中,但是当我这样做时,虽然 cq:tags 属性是已添加但具有空白值。
我的节点是这样的:/content/<my project node>/ContentPage/jcr:content
ResourceResolver resolver = CommonUtils.getResourceResolver(resourceResolverFactory);
String[] strValue = tagList.stream().toArray(String[]::new); // tagList has String values in form of array.
Resource resource = resolver.getResource(CONTENT_DATA_NODE);
if (resource != null) {
Node node = resource.adaptTo(Node.class);
if (node != null) {
NodeIterator nodeIterator = node.getNodes();
while (nodeIterator.hasNext()) {
innerNode = nodeIterator.nextNode();
innerNode.setProperty(CQ_TAGS, strValue);
innerNode.getSession().save();
}
}
}
我的 sling 用户映射器服务是 mybundle.core:datawrite=userdatawriter ,如果我的资源解析器工厂为空,我会直接从请求中获取解析器。
最初,我认为这可能是访问问题,因此我以编程方式尝试使用任何随机属性和值: 属性:xyz,值:aa,bb,cc,dd 这是由我的代码编写的,没有任何问题, 只有在以编程方式添加 cq:tags 时才会出现问题。尽管我可以从页面属性或 crxde 节点本身手动添加具有任何长值列表的 cq:tags ,而不会出现任何问题。
我在这里遗漏了什么并且在代码中做错了,它不仅可以添加 cq:tags 还可以覆盖如果 cq:tags 存在。
P.S:我的 AEM 版本是 AEM 6.5 SP2
【问题讨论】: