Я занимаюсь разработкой приложения JSF 2.0 (Mojarra + Primefaces) и использую среду сборки maven. До того, как я использовал файл face-config.xml для регистрации своих пользовательских конвертеров и валидаторов, до сих пор все шло хорошо. Затем я увидел синтаксический сахар JSF 2.0 - подход к настройке на основе аннотаций. И теперь я хотел бы использовать его вместо файла конфигурации xml. Проблема заключалась в том, что Мохарра не сканировал мои аннотированные классы. Я понял, что мне нужно установить атрибут <faces-config ... metadata-complete="false">
в false. Теперь это работает, но только если я запускаю свое приложение с целью mvn tomcat:run-war
, а не с динамическим проектом mvn tomcat:run
, который более удобен для разработки. В спецификации JSP 2.0 сказано, что:
Если элемент в файле WEB-INF /face-config.xml
содержит атрибут metadata-complete, значение которого равно «true», реализация не должна выполнять аннотацию
сканирование любых классов, кроме тех, которые предусмотрены самой реализацией. В противном случае продолжайте как
следующим образом.
Если среда выполнения обнаруживает конфликт между записью в ресурсах конфигурации приложения и аннотацией,
запись в ресурсах конфигурации приложения имеет приоритет.
Все классы в WEB-INF / классах должны быть отсканированы.
Для каждого jar-файла в каталоге WEB-INF / lib приложения, если jar-файл содержит «META-INF /face-config.xml»
файл или файл, который соответствует регулярному выражению ". * .face-config.xml" (даже пустому), все классы в
эта банка должна быть отсканирована.
Но это ничего не говорит о динамических проектах, работающих в среде сборки maven :)! У кого-нибудь есть решение этой проблемы?
Приветствия
Кевин