我创建了一个Liferay 7模块,效果很好。
问题:在Java源代码中,我对管理员需要修改的内容进行了硬编码。
问题:Liferay外部化设置的方式是什么?我不介意服务器是否必须重新启动,但当然能够修改正在运行的服务器上的设置(通过Gogo Shell?)可能很酷,只要这些设置能够在服务器重启后继续运行。
更具体地说,我有一个模块,我希望能够配置一个看起来像"3g9828hf928rf98"
的API密钥和另一个模块,我想为其配置一个允许的结构列表,看起来像"BASIC-WEB-CONTENT","EVENTS","INVENTORY"
。
答案 0 :(得分:2)
Liferay正在使用标准的OSGi配置。在这里记录它是一项非常重要的任务,但它的布局很好in the documentation。
简而言之:
@Meta.OCD(id = "com.foo.bar.MyAppConfiguration")
public interface MyAppConfiguration {
@Meta.AD(
deflt = "blue",
required = false
)
public String favoriteColor();
@Meta.AD(
deflt = "red|green|blue",
required = false
)
public String[] validLanguages();
@Meta.AD(required = false)
public int itemsPerPage();
}
OCD
代表ObjectClassDefinition。它通过id / pid将此配置类/对象绑定到可配置对象。
AD
用于AttributeDefinition,并为配置界面提供一些提示,这些提示是借助此元类型自动生成的。
当你不喜欢自动生成的UI的外观时,你只能"只有"必须为您在屏幕上看到的标签添加本地化密钥(标准Liferay翻译)。
您可以在enroute上找到有关OSGi配置的更多详细信息,但我发现的示例总是比配置后更复杂。