我目前正在将我的自定义控件部署为OSGi插件,我想用我的bean做同样的事情。我已经尝试将它们放入OSGi插件中并且它工作正常但我唯一的问题是faces-config。
似乎必须在OSGi插件中调用faces-config才能工作,但这意味着我不能再在NSF中使用bean了,因为它似乎忽略了本地faces-config。
有没有办法在OSGi插件中更改faces-config的名称?
像FEATURE-faces-config.xml?
答案 0 :(得分:4)
在您的插件中扩展AbstractXspLibrary的类中,您可以覆盖“getFacesConfigFiles”,它应该返回一个表示插件中路径的字符串数组,以及任何名称的其他文件,以加载为faces-config添加。例如:
@Override
public String[] getFacesConfigFiles() {
return new String[] {
"com/example/config/beans.xml"
};
}
然后,您可以将配置文件放在Java源文件夹(或build.properties中包含的其他文件夹)中的该路径中,除了应用程序的普通faces-config,beans和all之外,还将加载它。 / p>
答案 1 :(得分:1)
NSF作为独立的,独特的Java应用程序运行。 OSGi插件作为单个代码库在OSGi层中运行,在所有这些不同的Java应用程序之上运行。因此,faces-config仅在该级别。
可以使用从XspContributor加载的ImplicitObjectFactory动态加载它们。这就是在OpenNTF Domino API中为例如userScope(存储在NSF的applicationScope中的bean)。请参阅OpenntfDominoXspContributor中引用的org.openntf.domino.xsp.helpers.OpenntfDominoImplicitObjectFactory,通过“com.ibm.xsp.library.Contributor”类型的扩展点加载。
一些警告:
跳过bean方法可能更容易,只需在beforePageLoad,页面控制器类中添加Java类的实例,或者您正在管理对相关XPage(如果是viewScope)或应用程序(如果是sessionScope /)的支持applicationScope)。