J’ai plusieurs résolveurs de vues dans une configuration Spring et je voulais utiliser différents résolveurs de vues pour différentes requêtes.
Exemple: pour les URL commençant par report_*
, utilisez le résolveur de vue Birt et, pour les appels ajax, utilisez le résolveur de tuiles, etc.
Essayé la propriété order, mais toutes les vues sont résolues par tilesViewResolver
.
...
Vous pouvez absolument le faire. ViewResolver
a une seule méthode, resolveViewName(Ssortingng)
qui renvoie
l’object View, ou null s’il n’est pas trouvé (facultatif, pour permettre l’enchaînement de ViewResolver)
Vos grains ViewResolver
sont enregistrés. Lorsqu’un nom de vue est renvoyé par un gestionnaire, Spring effectuera une itération dans chaque ViewResolver
, resolveViewName
méthode resolveViewName
avec le nom donné. Si la méthode retourne non- -null
, cette View
est utilisée. Si null
est retourné, alors il continue à itérer.
Donc, l’implémentation doit retourner null
si Spring doit l’ignorer.
Il existe des implémentations qui ne renvoient jamais null
. Cela semble être le cas avec vos classes ViewResolver
personnalisées. Si ViewResolver
renvoie une View
, même si celle-ci ne sera pas rendue, Spring l’utilisera.
Vous devez soit réparer cela, soit commander vos beans ViewResolver
. Par exemple, vous pouvez les commander avec l’interface Ordered
. Demandez à vos classes d’implémenter cette interface et renvoyer une valeur appropriée.