Liferay 在OSGI组件声明中使用属性
在我的模块中,在OSGI组件声明中,我需要使用portal-ext.properties中的属性,如下所示:Liferay 在OSGI组件声明中使用属性,liferay,osgi,liferay-7,Liferay,Osgi,Liferay 7,在我的模块中,在OSGI组件声明中,我需要使用portal-ext.properties中的属性,如下所示: @Component( immediate = true, property = { "dispatcher=FORWARD", "dispatcher=REQUEST", "servlet-context-name=", "servlet-filter-name=Detail UC Filter", "url-pattern=/web/guest/" + PropsUtil.get("
@Component(
immediate = true,
property = {
"dispatcher=FORWARD",
"dispatcher=REQUEST",
"servlet-context-name=",
"servlet-filter-name=Detail UC Filter",
"url-pattern=/web/guest/" + PropsUtil.get("myPath") + "/*"
}
但我得到了编译错误:“注释属性Component.property的值必须是常量表达式”。如何在此处使用属性?您可以使用配置管理配置设置这些属性中的任何一个。 因此,一种方法是使用一个单独的组件为该组件编写配置 您可以使用
configurationPolicy=configurationPolicy.REQUIRE
,以防止在出现此配置之前激活组件
另一种方法是使用组件工厂。请参阅。您可以使用配置管理员配置设置这些属性中的任何一个。 因此,一种方法是使用一个单独的组件为该组件编写配置 您可以使用
configurationPolicy=configurationPolicy.REQUIRE
,以防止在出现此配置之前激活组件
另一种方法是使用组件工厂。看
但我得到了编译错误:“注释属性Component.property的值必须是常量表达式”。我如何使用这里的物业
条目:
"url-pattern=/web/guest/" + PropsUtil.get("myPath") + "/*"
这就是问题所在。这是因为注释只能具有编译时常量的值。显然,这个属性不是编译时常量,因为它的值取决于调用方法
如果您想在运行时提供属性值,那么您可以在OSGi中使用配置管理来实现这一点。默认情况下,所有声明性服务组件都可以使用pid进行配置,pid为:
- 通过设置
@组件(configurationPid=“foo”)
- 通过设置
@组件(name=“bar”)
- 默认使用组件实现的完全限定类名
@Activate
方法接收此信息@Modified
方法,那么这些更改将是动态的,否则您的组件实例将被停用和丢弃,并创建和激活一个新实例@Component(configurationPolicy=ConfigurationPolicy.REQUIRE)
但我得到了编译错误:“注释属性Component.property的值必须是常量表达式”。我如何使用这里的物业
条目:
"url-pattern=/web/guest/" + PropsUtil.get("myPath") + "/*"
这就是问题所在。这是因为注释只能具有编译时常量的值。显然,这个属性不是编译时常量,因为它的值取决于调用方法
如果您想在运行时提供属性值,那么您可以在OSGi中使用配置管理来实现这一点。默认情况下,所有声明性服务组件都可以使用pid进行配置,pid为:
- 通过设置
@组件(configurationPid=“foo”)
- 通过设置
@组件(name=“bar”)
- 默认使用组件实现的完全限定类名
@Activate
方法接收此信息@Modified
方法,那么这些更改将是动态的,否则您的组件实例将被停用和丢弃,并创建和激活一个新实例@Component(configurationPolicy=ConfigurationPolicy.REQUIRE)
-不要横杆不要横杆!