我有一个定义良好的界面的应用程序。 它使用CDI来parsing模块,(具体来说,它使用API接口上的实例<>注入点来parsing模块),并通过接口传回各种数据。 我有意将API和实现保持分开,并且模块只从APIinheritance以避免紧耦合,应用程序只通过运行时依赖知道模块,并通过API完成数据传递。 应用程序在没有模块的情况下运行正常,只需将jar放入WEB-INF / lib文件夹并重新启动应用程序服务器即可添加。 我遇到的问题是我希望模块创build视图的一部分,因此我希望以可移植的方式调用JSF组件,或者从模块中进行包含以获得它呈现其视图。 我已经解决了我想要调用的模块,并准备好引用模块的接口。 我最初的想法是做一个ui:包含要求模块提供视图模板的地方,但我不知道如何以有意义的方式回答该查询,因为视图分辨率是从应用程序完成的根,而不是图书馆的根。 执行摘要是我不知道如何使用JSF for .xhtml(模板/组件)文件跳过从应用程序到库的差距。 使用CC会很好,但是如何在运行时指定我需要特定的CC实例,而不是将其硬编码到页面中? 我当然可以直接调用应用程序代码,并要求它提供标记,但是这看起来非常暴躁,一旦我有了标记,我不确定如何告诉JSF来评估它。 也就是说,我可以想象一个组件,将采取资源path,抢标记和评估,返回完成的标记,我只是不知道如何实现。 如果可能的话,我宁愿避免强迫模块开发人员去使用繁重的UIComponent方法,这意味着要么采取一种dynamic的方式来执行ui:include(或一些等效)或者dynamic调用CC的方式。 (我不介意在应用程序中编写UIComponent方法ONCE,如果这使得模块开发人员的生活更容易) 有什么build议,我应该看看这个了? (如果我先find答案,我会在这里发表答案)