160 votes

Est-il possible de faire en sorte que les valeurs vides de RequestParam utilisent la valeur par défaut ?

Si j'ai un mappage de demande similaire à ce qui suit :

@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}

Et ensuite, appelez cette requête avec :

http://example.com/test?i=

Je reçois le message d'erreur

Impossible de convertir une valeur de type 'java.lang.String' en type 'int' ; l'exception imbriquée est java.lang.NumberFormatException : Pour la chaîne d'entrée : ""'

Je peux résoudre ce problème soit en empêchant le client javascript d'envoyer des paramètres vides, soit en acceptant des valeurs de type chaîne et en ne les analysant que si elles ne sont pas vides.

UPDATE : Les versions ultérieures de spring implémentent maintenant le comportement souhaité à l'origine.

Je viens de tester cela dans spring 4.3.5 et j'ai constaté que le comportement transforme la valeur nulle en valeur par défaut sans générer de message d'erreur. NumberFormatException Ainsi, ma cartographie d'origine fonctionne désormais parfaitement.

Je ne suis pas sûr de la version de Spring dans laquelle ce changement de comportement a été effectué.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X