У меня есть веб-приложение, которое использует дополнительные модули. Модули реализованы в виде проектов веб-фрагментов, их банки могут или не могут быть развернуты с войной в зависимости от профиля сборки.Использование дополнительных библиотек тегов facelet
Модуль может содержать свои собственные module.taglib.xml
с пространством имен http://company.com/module
и некоторыми тегами.
Шаблоны XHTML войны использовать модуль теги, как это:
<ui:composition ... xmlns:mod="http://company.com/module">
<c:if test="#{moduleDeployed}">
<mod:someTag />
</c:if>
проблемы.
- Когда модуль не развернут, военные страницы работают хорошо, но в ProjectStage.Development я получаю FacesMessage предупреждения:
Внимание: Эта страница требует пространства имен XML http://company.com/module объявлена с префиксом мод, но нет taglibrary существует для этого пространства имен.
- Насколько я могу судить, спецификация JSF не определяет, что происходит, когда шаблон использует несуществующую библиотеку тегов. Таким образом, при моем текущем типе навигации страницы страниц могут перестать работать после обновления или перейти на другую реализацию JSF.
Вопросы.
- Есть ли (не очень уродливый) способ отключить это конкретное предупреждение?
- Есть ли лучший подход к использованию дополнительных библиотек тегов facelet?
На данный момент я планирую отключить предупреждение в любом случае, я могу: например. переопределить Message renderer и проверить строку сообщения, если это необходимо. Если проблема 2 проявляется, сделайте файл taglib.xml для размещения сборки для нерасширенных модулей.
Почему бы не убедитесь, что 'необязательно' модуль всегда присутствует? Ваааай легче всех этих хаков. – Kukeltje
Для целей данного вопроса. 1. Не хотите поставлять клиенту больше, чем было заказано. 2. Динамическое связующее вещество, например. Альтернативы CDI. 3. Обеспечение правильности реализации динамической привязки. –
Placeel taglib на самом деле не такая уж плохая идея. – BalusC