2017-07-26 25 views
0

我创建了一个Liferay 7模块,它运行良好。我写了一个Liferay模块。如何使其可由管理员配置?

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

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

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

回答

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并为配置界面提供一些提示,该界面在此元类型的帮助下自动生成。

而当您不喜欢自动生成的用户界面的外观时,您“仅”必须为您在屏幕上看到的标签(标准Liferay翻译)添加本地化键。

有关OSGi配置的更多详细信息,例如​​,尽管我发现的例子总是比配置后更复杂一点。

相关问题