@ControllerAdvice Pas De Tir

Je suis en train de travailler sur un Spring MVC/Webflow Application (version 3.2) et d'essayer de sortir de gestion des exceptions de travail où je peux en sortie une exception personnalisée message dans un fichier, et de l'erreur.jsp. Le problème que je vais avoir, c'est que le Gestionnaire d'Exception n'est pas de se faire licencier. J'ai créé la classe suivante et annotée "@ControllerAdvice" et le mettre dans le même paquet que mon contrôleur qui est en train de jeter de l'exception:

@ControllerAdvice
public class MyCustomExceptionController {

    @ExceptionHandler(MyCustomException.class)
    public ModelAndView handleMyException(MyCustomException ex) {   
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/error/error");
        modelAndView.addObject("errorId", ex.getErrorId());
        modelAndView.addObject("message", ex.getErrorMessage());        
        return modelAndView;
    }
}

et ajouté ce qui suit à la mvc du Fichier de config:

<mvc:annotation-driven/>

Et comprenait les éléments suivants dans mon appli du Fichier de config:

<context:component-scan base-package="package containing my controllers and MyCustomExceptionController">
        <context:include-filter type="annotation" 
    expression="org.springframework.web.bind.annotation.ControllerAdvice" />
    </context:component-scan> 

Des idées pourquoi cela ne fonctionne pas?

La méthode handleMyException() va être appelée à chaque fois qu'une unhandled exception personnalisée de votre choix se produit (MyCustomException). Cette méthode est pas invoquée, même après MyCustomException est levée? Ceci est le tutoriel, vous pouvez vous rapprocher.
J'ai mis un point d'arrêt sur handleMyException et la méthode n'est jamais invoquée, même après que j'ai jeter MyCustomException.
Si vous étiez à annoter une méthode de votre choix avec le @InitBinder annotation dans cette classe, comme un exemple, est que la méthode invoquée?
Salut Minuscule, j'ai ajouté le test suivant la méthode de la même classe mais elle n'est jamais invoquée: @InitBinder public void InitBinder() { System..println("Dans InitBinder méthode"); }
J'ai ceci du fichier de configuration (dispatcher-servlet.xml). Aimeriez-vous le comparer avec votre fichier de config? En dehors de cela j'ai spécifié <context:annotation-config/> dans un autre fichier applicationContext.xml mais cela ne devrait pas être pertinents pour le problème concret auquel vous êtes confronté. Le @ControllerAdvice annotation travaille avec ces configurations au Printemps 3.2.2 et le Printemps 4.0.0 GA (Avertissement : je ne sais pas à propos de Spring WebFlow).

OriginalL'auteur user676567 | 2014-02-19