У меня есть приложение с четко определенным интерфейсом. Он использует CDI для разрешения модулей, (в частности, он использует экземпляры инстанции для интерфейсов API для решения модулей) и без проблем передает различные данные назад и четвертый через интерфейсы. Я намеренно сохранил API и реализацию отдельно, и модули только наследуют от API, чтобы избежать жесткой связи, и приложение знает только о модулях через ожидания выполнения, а передача данных выполняется через API. Приложение отлично работает без модулей, которые можно добавить просто, отбросив банку в папку WEB-INF/lib и перезапустив сервер приложений.
В тех случаях, когда я сталкиваюсь с проблемами, я хочу, чтобы модули создавали часть представления, и поэтому я хочу вызывать переносимым образом как компонент JSF, так и сделать его из модуля в порядке чтобы он сделал свое мнение. Я уже решил, какой модуль я хочу вызывать, и имею ссылки на интерфейс модуля. То, как я изначально думал, чтобы сделать это, было сделать ui: include, который просит модуль предоставить, где он просматривает шаблон, но я понятия не имею, как ответить на этот запрос значимым образом, поскольку разрешение представления выполняется из приложения root, а не корень библиотеки.
Резюме состоит в том, что я не знаю, как перераспределить пробел от приложения к библиотеке, используя JSF для файлов .xhtml(template/component).
Использование CC было бы неплохо, но как я могу указать, что я хочу, чтобы конкретный экземпляр CC во время выполнения вместо того, чтобы иметь жесткую кодировку на странице?
Я могу, конечно, вызвать код приложения напрямую и запросить его для разметки, но это кажется действительно грубой силой, и как только у меня есть разметка, я не уверен точно, как рассказать JSF о ее оценке. Тем не менее, я могу представить себе компонент, который будет использовать путь к ресурсам, захватить разметку и оценить ее, возвращая завершенную разметку, я просто не знаю, как ее реализовать.
Я бы предпочел избегать принуждения разработчиков модулей к возможности использования UIComponent с большой нагрузкой, если это возможно, что означает либо динамический способ выполнения ui: include (или некоторый эквивалент), либо динамический способ вызова CC. (Я не против кодирования UIComponent подхода ONCE в приложении, если это то, что требуется, чтобы сделать жизнь разработчиков модулей проще)
Любые предложения о том, где я должен посмотреть, чтобы понять это? (Я отправлю ответ здесь, если найду его первым)