2010-12-10 4 views
5

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

Répondre

1

moi avons eu aussi ce problème, mais a constaté que l'ajout de la guerre: objectif inplace fait le travail pour moi. à savoir utiliser

mvn clean war:inplace tomcat:run 

au lieu de simplement « tomcat: run » et il devrait fonctionner très bien.

Questions connexes