Magnolia JCR 获取 LinkedList 属性项

Posted

技术标签:

【中文标题】Magnolia JCR 获取 LinkedList 属性项【英文标题】:Magnolia JCR get LinkedList Property Items 【发布时间】:2017-12-08 12:59:30 【问题描述】:

我正在尝试检索节点 0 的属性 - 标记值,我相信这是一个linkedList 对象属性。如您所见,它是 [****,****]

我希望检索对象值并存储到List<String> 对象中 所以我可以将每个值取出以供后期使用,例如

String idA = "542f74fd-bfaf-4377-854a-8e62082edc6c"; 
string idB = "39aab11f-243f-464c-ae6d-c1f069f17d6c";

我的尝试如下:

List<String> tagList = new ArrayList<String>();
tagList = componentNode.getProperties(node, "tags");

也试过这个:

List<String> tagList = new ArrayList<String>();
tagList = PropertyUtil.getProperty(node, "tags");

但它们都不起作用。

请向我推荐代码示例。 谢谢

【问题讨论】:

【参考方案1】:

我相信它们在 JCR 中被称为多值属性,并且通过数组而不是列表来支持。

我自己没有测试过代码,但我相信它会起作用。 这应该可以解决问题:

  Property property = node.getProperty("tags");     
  Value[] tags = property.getValues();

如果你真的想的话,你可以将它转换/包装成 List。

希望对你有帮助,

干杯,

【讨论】:

更好:List&lt;String&gt; tags = info.magnolia.jcr.util.PropertyUtil.getValuesStringList(node.getProperty("tags").getValues());

以上是关于Magnolia JCR 获取 LinkedList 属性项的主要内容,如果未能解决你的问题,请参考以下文章

Magnolia JCR 获取 LinkedList 属性项

在我的 Spring MVC Magnolia 模块中获取 JCR Session 对象的更好方法是 LifeTimeJCRSessionUtil

将 JCR 节点转换为 Vaadin 项目 (Magnolia)

检索并分配 jcr:mixinTypes magnolia 中的多值属性

写入 JCR (JackRabbit) [Magnolia] 时出现 AccessDeniedException

Magnolia CMS:从 JCR 配置中引用 YAML 配置