Je développe une application JSF 2.0 (Mojarra + Primefaces) et utilise l'environnement de construction maven. Avant d'avoir utilisé le fichier faces-config.xml pour l'enregistrement de mes convertisseurs et validateurs personnalisés, tout s'est bien passé jusqu'à présent. Puis j'ai vu du sucre syntaxique de JSF 2.0 - l'approche de configuration basée sur l'annotation. Et maintenant je voudrais l'utiliser, au lieu du fichier de configuration xml. Un problème était que Mojarra n'a pas analysé mes classes annotées. J'ai compris que j'avais besoin de mettre l'attribut <faces-config ... metadata-complete="false">
à false. Maintenant, il fonctionne, mais seulement si je commence mon application avec mvn tomcat:run-war
objectif et non avec le projet dynamique mvn tomcat:run
, qui est plus à l'aise pour le développement. La spécification JSP 2.0 dit que:Maven tomcat: exécution de l'objectif et de l'analyse des composants/convertisseurs/validateurs basés sur l'annotation jsf
Si l'élément dans le fichier WEB-INF/faces-config.xml contient attribut complet-métadonnées dont la valeur est « true », la mise en œuvre ne doit pas effectuer des annotations balayage sur toutes les classes sauf pour les classes fournies par l'implémentation elle-même. Sinon, continuez comme suit: .
Si le runtime découvre un conflit entre une entrée dans les ressources de configuration de l'application et une annotation, l'entrée dans les ressources de configuration de l'application est prioritaire. Toutes les classes des classes WEB-INF/doivent être numérisées.
Pour chaque fichier jar dans le répertoire WEB-INF/lib de l'application, si le fichier jar contient un fichier "META-INF/faces-config.xml" ou un fichier correspondant à l'expression régulière ". *. Faces-config .xml "(même vide), toutes les classes de doivent être scannées.
Mais cela ne dit rien sur les projets dynamiques s'exécutant dans l'environnement de construction maven :)! Quelqu'un at-il une solution à ce problème?
Cheers,
Kevin