2013-03-15 1 views
0

Supposons que j'ai un contrôleur:Configurer la page d'erreur pour incompatibilité de type @PathVariable

@Controller 

public class SomeController { 

    @RequestMapping(value = "{id}/object.do") 
    public String showObject(@PathVariable("id") Integer id, 
          HttpServletRequest request) { 
      //do smth 
      return "somePage"; 
     } 
} 

Lorsque "id" est pas un numéro, mais comme chaîne "aaa/object.do" Tomcat me montrer une erreur - " La requête envoyée par le client était syntaxiquement incorrecte. "

Y a-t-il un moyen de configurer une page d'erreur qui sera affichée uniquement lorsque la variable de chemin "id" a un type incorrect?

Répondre

1

Vous pouvez gérer cela avec @ExceptionHandler pour cette erreur particulière (je pense qu'il est TypeMismatchException)

@ExceptionHandler(TypeMismatchException.class) 
public ModelAndView handleTypeMismatchException(TypeMismatchException ex) { 
    //TODO log 
    // Return something reasonable to the end user. 
    ... 
} 

S'il vous plaît noter que @ExceptionHandler a essentiellement à peu près les mêmes capacités, en tant que gestionnaires habituels:

Tout comme les méthodes de contrôleur standard annotées avec une annotation @RequestMapping, les arguments de méthode et les valeurs de retour des méthodes @ExceptionHandler sont très flexibles.