Configurer la priorité des résolveurs de vues multiples dans Spring MVC
Problème
Dans l'application Spring MVC, il arrive souvent que vous appliquiez quelques stratégies de résolution de vue pour résoudre le nom de la vue. Par exemple, combinez trois résolveurs de vue ensemble:InternalResourceViewResolver,ResourceBundleViewResolver etXmlViewResolver.
/WEB-INF/spring-views.xml /WEB-INF/pages/ .jsp
Mais, si un nom de vue est retourné, quelle stratégie de résolution de vue sera utilisée?
Solution
Si plusieurs stratégies de résolution de vue sont appliquées, vous devez déclarer la priorité via la propriété «order», où lelower order value has a higher priority, par exemple:
/WEB-INF/spring-views.xml /WEB-INF/pages/ .jsp
Maintenant, si un nom de vue est retourné, la stratégie de résolution de vue fonctionne dans l'ordre suivant:
XmlViewResolver --> ResourceBundleViewResolver --> InternalResourceViewResolver
Note
LesInternalResourceViewResolver doivent toujoursassign with the lowest priority (numéro d'ordre le plus grand), car cela résoudra la vue quel que soit le nom de vue renvoyé. Cela a empêché d'autres résolveurs de vue de résoudre la vue s'ils ont une priorité inférieure.
Télécharger le code source
Téléchargez-le -SpringMVC-ViewResolver-Priority-Example.zip (7 Ko)