se ho una mappatura della richiesta simile alla seguente:
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
E poi chiama questa richiesta con:
http://example.com/test?i=
Ottengo il messaggio di errore
Impossibile convertire il valore di tipo "java.lang.String" nel tipo "int"; l'eccezione annidata è java.lang.NumberFormatException: per la stringa di input: "" '
Posso risolvere questo problema impedendo al client javascript di inviare parametri vuoti o accettando valori stringa e analizzando solo se non vengono trovati vuoti.
AGGIORNARE : Le versioni successive della primavera ora implementano il comportamento originariamente desiderato.
L'ho appena testato nella primavera 4.3.5 e ho scoperto che il comportamento ora trasformerà il valore nullo nel valore predefinito senza aumentare un NumberFormatException
, quindi; la mia mappatura originale ora funziona bene.
Non sono sicuro di quale versione della primavera sia stato apportato questo cambiamento comportamentale.
String
tipo fornito accidentalmente . user902383, è corretto, anche se per un valore intero preferirei che un valore null / vuoto usasse invece il valore predefinito.