如何创建模块化 JSF 2.0 应用程序?
我有一个具有明确定义的接口的应用程序。它使用CDI来解析模块(特别是它使用API接口上的实例<>注入点来解析模块),并通过接口将各种数据传递回去和第四个而不会出现问题。我特意将 API 和实现分开,模块仅从 API 继承以避免紧密耦合,并且应用程序仅通过运行时依赖项以及通过 API 完成的数据传递来了解模块。应用程序在没有模块的情况下运行良好,只需将jar放入WEB-INF / lib文件夹并重新启动应用程序服务器即可添加模块。
我遇到的问题是,我希望模块创建视图的一部分,因此我想以可移植的方式调用JSF组件,或者从模块中执行包含,以便让它呈现其视图。我已经解决了要调用的模块,并准备好了对模块接口的引用。我最初想到的方法是做一个ui:include,要求模块提供它的视图模板的位置,但我不知道如何以有意义的方式回答该查询,因为视图解析是从应用程序根目录而不是库根目录完成的。
执行摘要是,我不知道如何使用JSF将差距从应用程序跳到库,用于.xhtml(模板/组件)文件。
使用CC会很好,但是我如何指定我想要一个特定的CC实例在运行时,而不是将该硬编码到页面中?
我当然可以直接调用应用程序代码并要求它进行标记,但这似乎真的很蛮力,一旦我有了标记,我就不确定如何告诉JSF评估它。也就是说,我可以想象一个组件,它将采用资源路径,获取标记并评估它,返回完成的标记,我只是不知道如何实现它。
如果可能的话,我宁愿避免强迫模块开发人员采用繁重的UIComponent方法,这意味着要么是动态地执行ui:include(或一些等效的)方式,要么是调用CC的动态方式(我不介意在应用程序中编写UIComponent方法一次,如果这是使模块开发人员的生活更轻松所需要的)
关于我应该在哪里解决这个问题的任何建议?(如果我先找到答案,我会在这里发布)