2017-03-24 3 views
0

Je travaille sur un point d'arrêt reposant à ressort qui accepte la plage de pages (commencer & numéro de page de fin). Je veux que ma requête params- pageStart et pageEnd n'accepte que des entiers. Quand je passe « pageStart = a » à postman je reçois ci-dessous erreur:Paramètre de demande de ressort pour n'accepter que des entiers

@RequestMapping(value = "/{accNumber}/abc/xyz", method = RequestMethod.GET) 
    @Loggable 
    @ResponseBody 
    public RestResponse<Class1> getData(
     @Loggable @PathVariable(value = "accNumber") String accNumber, 
     @RequestParam(value = "pageStart", required = false, defaultValue = "0") Integer pageStart, 
     @RequestParam(value = "pageEnd", required = false, defaultValue = "10") Integer pageEnd, 
     HttpServletResponse response) throws Exception { 

    Class1 class1 = new Class1(); 
    class1 = retrieveData(accNumber, pageStart, pageEnd); 
    RestResponse<Class1> restResponse = new RestResponse<Class1>(
      class1); 

    return restResponse; 
    } 

La demande n'est pas valide [Impossible de convertir la valeur de type « java.lang.String » au type requis « java.lang.Integer '; l'exception imbriquée est java.lang.NumberFormatException: pour la chaîne d'entrée: \ "a \"]

Comment gérer cette exception et laisser l'utilisateur savoir qu'il ne doit transmettre que des entiers?

+1

Partagez d'abord votre code, alors seulement nous pouvons donner des suggestions :) –

+0

ajouté! @TharsanSivakumar – Anonymous

Répondre

0

Vous pouvez gérer de deux façons

1) en utilisant la méthode de gestionnaire d'exceptions

avoir une méthode dans le contrôleur

@ExceptionHandler({Exception.class}) 
    public ModelAndView handleException(Exception ex) { 
     ModelAndView model = new ModelAndView("Exception"); 

     model.addObject("exception", ex.getMessage()); 

     return model; 
    } 

http://www.codejava.net/frameworks/spring/how-to-handle-exceptions-in-spring-mvc

2) Utilisation des paramètres chaîne

Utilisez String comme type pour tous @ Les paramètres PathVariable et @RequestParameter effectuent ensuite l'analyse dans la méthode du gestionnaire.

+0

Votre problème est-il résolu? –

+0

Merci, @TharsanSivakumar La première option aiderait à résoudre ce problème. Mais en considérant la deuxième option, si je mets ma requête param à String, alors il accèderait à n'importe quoi. Je veux que mon point de terminaison n'accepte que des entiers car il s'agit d'une plage de pages. Comment je vais à ce sujet? – Anonymous

+0

Ensuite, allez à la 1ère option et vous pouvez obtenir plus d'informations sur l'erreur lien fourni dans –