si j'ai un mappage de requête similaire à ce qui suit:
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
Et puis appelez cette demande avec:
http://example.com/test?i=
Je reçois le message d'erreur
Échec de la conversion de la 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 en empêchant le client javascript d'envoyer des paramètres vides, ou en acceptant les valeurs de chaîne et en analysant uniquement si elles ne sont pas vides.
METTRE À JOUR : Les versions ultérieures de Spring implémentent désormais le comportement initialement souhaité.
Je viens de tester cela au printemps 4.3.5 et j'ai constaté que le comportement transformera en fait la valeur nulle en valeur par défaut sans augmenter un NumberFormatException
, donc; ma cartographie d'origine fonctionne maintenant très bien.
Je ne sais pas quelle version du printemps ce changement de comportement a été effectué.
String
type fourni accidentellement . user902383, c'est correct, mais pour une valeur entière, je préférerais qu'une valeur nulle / vide utilise à la place la valeur par défaut.