Zajmuję się tworzeniem aplikacji JSF 2.0 (Mojarra + Primefaces) i korzystaniem ze środowiska maven-build. Zanim użyłem pliku faces-config.xml do zarejestrowania moich niestandardowych konwerterów i weryfikatorów, wszystko poszło dobrze. Potem zobaczyłem syntaktyczny cukier JSF 2.0 - podejście oparte na adnotacjach. A teraz chciałbym go użyć, zamiast pliku konfiguracyjnego xml. Problem polegał na tym, że Mojarra nie skanował moich adnotowanych klas. Zorientowałem się, że muszę nadać atrybutowi false wartość atrybutu <faces-config ... metadata-complete="false">
. Teraz działa, ale tylko wtedy, gdy uruchamiam aplikację z celem mvn tomcat:run-war
, a nie z dynamicznym projektem mvn tomcat:run
, który jest wygodniejszy dla programistów. Specyfikacja JSP 2.0 mówi, że:Maven tomcat: narzędzie do generowania celów i jsf oparte na adnotacjach/komponentach/konwerterach/walidatorach
Jeżeli element w WEB-INF/faces-config.xml plik zawiera atrybut metadanych uzupełniania którego wartość to „true”, realizacja nie musi wykonywać skanowanie Adnotacja na dowolnych klasach, z wyjątkiem klas dostarczonych przez samą implementację. W przeciwnym razie kontynuuj jako .
Jeśli środowisko wykonawcze wykryje konflikt między wpisem w Zasobie konfiguracji aplikacji i adnotacją, pierwszeństwo ma pozycja w Zasobie konfiguracji aplikacji. Wszystkie klasy w WEB-INF/classes muszą zostać przeskanowane.
Dla każdego słoika w katalogu WEB-INF/lib aplikacji, jeśli słoik zawiera plik "META-INF/faces-config.xml" lub plik pasujący do wyrażenia regularnego ". *. Faces-config .xml "(nawet pusty), wszystkie klasy w , w którym słoik musi zostać przeskanowany.
Ale nie mówi nic o dynamicznych projektach działających w środowisku budowy mavenów :)! Czy ktoś ma rozwiązanie tego problemu?
Cheers,
Kevin