Konfigurieren Sie die Priorität für mehrere Ansichtsauflöser in Spring MVC

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)