Configurer la priorité des résolveurs de vues multiples dans Spring MVC

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