我写了一个 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 配置的详细信息,尽管我发现的示例总是比仅仅进行配置要复杂一些。
我已经创建了一个 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.
AD
用于 AttributeDefinition 并为配置界面提供一些提示,该界面是在该元类型的帮助下自动生成的。
如果您不喜欢自动生成的 UI 的外观,您 "only" 必须为您在屏幕上看到的标签添加本地化键(标准 Liferay 翻译)。
您会在 enroute 上找到更多关于 OSGi 配置的详细信息,尽管我发现的示例总是比仅仅进行配置要复杂一些。