同一个组件中的几种配置(@Meta.OCD接口)
Several configurations (@Meta.OCD interface) in the same component
我有一个组件 MyComponent 需要访问 AConfiguration 和 BConfiguration:
my.MyComponent:
@Component(
configurationPid = "[my.AConfiguration,my.BConfiguration]"
)
public class MyComponent {
@Activate
@Modified
protected void activate(Map<String, Object> properties) {
_aConfiguration = ConfigurableUtil
.createConfigurable(AConfiguration.class, properties);
_bConfiguration = ConfigurableUtil
.createConfigurable(BConfiguration.class, properties);
}
public void hello() {
System.out.println("A:" + _sConfiguration.valueA());
System.out.println("B:" + _sConfiguration.valueB());
}
}
my.AConfiguration:
@Meta.OCD(
id = "my.AConfiguration"
)
public interface AConfiguration {
@Meta.AD(deflt = "6")
public long valueA();
}
my.BConfiguration:
@Meta.OCD(
id = "my.BConfiguration"
)
public interface BConfiguration {
@Meta.AD(deflt = "6")
public long valueB();
}
问题:使用Liferay的配置UI将valueA和valueB配置为7
没有效果,MyComponent.hello()
仍然看到默认值6
.
我做错了什么?
让我的组件使用来自多个配置接口的配置信息的正确方法是什么?
用例:我的组件进行一些业务处理并将结果保存到远程服务器。一个配置界面包含业务处理设置,一个配置界面包含URL到远程服务器
@Component
注释上的 configurationPid
属性格式错误。应该是:
configurationPid = { "my.AConfiguration", "my.BConfiguration" }
这将创建一个包含两个条目的字符串数组值,my.AConfiguration
和 my.BConfiguration
。相反,您使用了:
configurationPid = "[my.AConfiguration,my.BConfiguration]"
... 创建一个 单个 字面值 [my.AConfiguration,my.BConfiguration]
的字符串,这几乎肯定不是您想要的。
我有一个组件 MyComponent 需要访问 AConfiguration 和 BConfiguration:
my.MyComponent:
@Component(
configurationPid = "[my.AConfiguration,my.BConfiguration]"
)
public class MyComponent {
@Activate
@Modified
protected void activate(Map<String, Object> properties) {
_aConfiguration = ConfigurableUtil
.createConfigurable(AConfiguration.class, properties);
_bConfiguration = ConfigurableUtil
.createConfigurable(BConfiguration.class, properties);
}
public void hello() {
System.out.println("A:" + _sConfiguration.valueA());
System.out.println("B:" + _sConfiguration.valueB());
}
}
my.AConfiguration:
@Meta.OCD(
id = "my.AConfiguration"
)
public interface AConfiguration {
@Meta.AD(deflt = "6")
public long valueA();
}
my.BConfiguration:
@Meta.OCD(
id = "my.BConfiguration"
)
public interface BConfiguration {
@Meta.AD(deflt = "6")
public long valueB();
}
问题:使用Liferay的配置UI将valueA和valueB配置为7
没有效果,MyComponent.hello()
仍然看到默认值6
.
我做错了什么?
让我的组件使用来自多个配置接口的配置信息的正确方法是什么?
用例:我的组件进行一些业务处理并将结果保存到远程服务器。一个配置界面包含业务处理设置,一个配置界面包含URL到远程服务器
@Component
注释上的 configurationPid
属性格式错误。应该是:
configurationPid = { "my.AConfiguration", "my.BConfiguration" }
这将创建一个包含两个条目的字符串数组值,my.AConfiguration
和 my.BConfiguration
。相反,您使用了:
configurationPid = "[my.AConfiguration,my.BConfiguration]"
... 创建一个 单个 字面值 [my.AConfiguration,my.BConfiguration]
的字符串,这几乎肯定不是您想要的。