AEM 中 OSGi 组件中的基数 属性 值

Cardinal property value in OSGi Component in AEM

我正在编写一个具有 cardinal 关联值的 OSGi 组件。

我写了以下几行:

@Property(name="cardinalValue",cardinality=4,description="testing cardinality")
private String[] cardinalValue;

然后在代码中我试图打印出基数:

for(String cardinal : cardinalValue){
  log.debug(cardinal);
}

一旦我在 OSGi 包中的组件中安装并触发方法,即使在 AEM 控制台的配置管理器控制台中填写值之后,似乎仍存在空指针异常。

这是我第一次使用 cardinality,我什至尝试了与上述数组方法相同的 List 和 Vector 方法,但仍然无法成功打印日志。

我建议您自己初始化 属性。

为此,将当前 属性 声明更改为下一种方式:

@Property(label="cardinalValue",cardinality=4,description="testing cardinality")
private static final String CARDINAL_PROPERTY = "cardinalValue";
private String[] cardinalValue;

然后编写方法,该方法将使用组件激活和修改配置中的值初始化 属性:

@Activate
@Modified
protected void activate(final Map<String, Object> props) {
    String[] cardinalValue = PropertiesUtil.toStringArray(props.get(CARDINAL_PROPERTY));
}

现在您的 cardinalValue 变量将被初始化。