Konfigurieren Sie die Priorität mehrerer Ansichtsauflöser in Spring MVC
Problem
In Spring MVC-Anwendungen wenden Sie möglicherweise häufig einige Strategien für die Ansichtsauflösung an, um den Ansichtsnamen aufzulösen. Kombinieren Sie beispielsweise drei Ansichtsauflöser miteinander:InternalResourceViewResolver,ResourceBundleViewResolver undXmlViewResolver.
/WEB-INF/spring-views.xml /WEB-INF/pages/ .jsp
Wenn jedoch ein Ansichtsname zurückgegeben wird, welche Ansichtsauflösungsstrategie wird verwendet?
Lösung
Wenn mehrere View Resolver-Strategien angewendet werden, müssen Sie die Priorität über die Eigenschaft "order" deklarieren, wobei dielower order value has a higher priority beispielsweise:
/WEB-INF/spring-views.xml /WEB-INF/pages/ .jsp
Wenn nun ein Ansichtsname zurückgegeben wird, funktioniert die Ansichtsauflösungsstrategie in der folgenden Reihenfolge:
XmlViewResolver --> ResourceBundleViewResolver --> InternalResourceViewResolver
Note
DieInternalResourceViewResolver müssen immerassign with the lowest priority (größte Bestellnummer) sein, da die Ansicht unabhängig vom zurückgegebenen Ansichtsnamen aufgelöst wird. Andere Ansichtsauflöser haben keine Chance, die Ansicht aufzulösen, wenn sie eine niedrigere Priorität haben.
Quellcode herunterladen
Laden Sie es herunter -SpringMVC-ViewResolver-Priority-Example.zip (7 KB)