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



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

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

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

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

Liferay正在使用标准的OSGi配置。在这里记录它是一项艰巨的任务,但它在文档中得到了很好的阐述。

总之:

@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翻译(。

你会发现更多关于OSGi配置的细节,例如在途中,尽管我发现的例子总是比仅仅追求配置要复杂一些。

最新更新