我写了一个Liferay模块。如何让管理员对其进行配置?

时间:2017-07-26 03:10:22

标签: liferay osgi liferay-7

我创建了一个Liferay 7模块,效果很好。

问题:在Java源代码中,我对管理员需要修改的内容进行了硬编码。

问题:Liferay外部化设置的方式是什么?我不介意服务器是否必须重新启动,但当然能够修改正在运行的服务器上的设置(通过Gogo Shell?)可能很酷,只要这些设置能够在服务器重启后继续运行。

更具体地说,我有一个模块,我希望能够配置一个看起来像"3g9828hf928rf98"的API密钥和另一个模块,我想为其配置一个允许的结构列表,看起来像"BASIC-WEB-CONTENT","EVENTS","INVENTORY"

1 个答案:

答案 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配置的更多详细信息,但我发现的示例总是比配置后更复杂。