Сконфигурировать приоритет разрешения нескольких представлений в Spring MVC

Сконфигурируйте приоритет разрешения нескольких представлений в Spring MVC

проблема

В приложении Spring MVC часто вы можете применить несколько стратегий распознавания представлений для разрешения имени представления. Например, объедините вместе три преобразователя представлений:InternalResourceViewResolver,ResourceBundleViewResolver иXmlViewResolver.


    
          
             /WEB-INF/spring-views.xml
          
    

    
          
    

    
              
                 /WEB-INF/pages/
              
              
                 .jsp
              
        

Но, если имя представления возвращается, какая стратегия решателя представления будет использоваться?

Решение

Если применяются несколько стратегий преобразования представлений, вы должны объявить приоритет через свойство «order», гдеlower order value has a higher priority, например:


    
         
            /WEB-INF/spring-views.xml
         
         
    

    
         
         
    

    
              
                 /WEB-INF/pages/
              
              
                 .jsp
              
          
        

Теперь, если имя представления возвращается, стратегия разрешения представления работает в следующем порядке:

XmlViewResolver --> ResourceBundleViewResolver --> InternalResourceViewResolver

Note
InternalResourceViewResolver всегда должен бытьassign with the lowest priority (наибольший порядковый номер), потому что он разрешит представление независимо от того, какое имя представления будет возвращено. Это привело к тому, что другие средства разрешения представления не имеют возможности разрешить представление, если они имеют более низкий приоритет.

Скачать исходный код