我写了一个 Liferay 模块。如何使其可由管理员配置?

I wrote a Liferay module. How to make it configurable by administrators?

我已经创建了一个 Liferay 7 模块,它运行良好。

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

问题:Liferay 外部化设置的方式是什么?我不介意服务器是否必须重新启动,但是当然,如​​果这些设置在服务器上仍然存在,那么在实时 运行 服务器上(通过 Gogo Shell?)修改设置的能力可能会很酷重新启动。

更具体地说,我有一个模块,我希望能够为它配置一个看起来像 "3g9828hf928rf98" 的 API 键和另一个我想要的模块配置类似于 "BASIC-WEB-CONTENT","EVENTS","INVENTORY".

的允许结构列表

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.

将此配置 class/object 绑定到可配置对象

AD 用于 AttributeDefinition 并为配置界面提供一些提示,该界面是在该元类型的帮助下自动生成的。

如果您不喜欢自动生成的 UI 的外观,您 "only" 必须为您在屏幕上看到的标签添加本地化键(标准 Liferay 翻译)。

您会在 enroute 上找到更多关于 OSGi 配置的详细信息,尽管我发现的示例总是比仅仅进行配置要复杂一些。