si tengo un mapeo de solicitud similar al siguiente:
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
Y luego llame a esta solicitud con:
http://example.com/test?i=
Me sale el mensaje de error
Error al convertir el valor del tipo 'java.lang.String' al tipo 'int'; la excepción anidada es java.lang.NumberFormatException: para la cadena de entrada: "" '
Puedo resolver esto impidiendo que el cliente javascript envíe parámetros vacíos o aceptando valores de cadena y solo analizando si no se encuentran en blanco.
ACTUALIZACIÓN : Las versiones posteriores de Spring ahora implementan el comportamiento originalmente deseado.
Acabo de probar esto en la primavera 4.3.5 y descubrí que el comportamiento ahora, de hecho, convertirá el valor nulo en el valor predeterminado sin generar un NumberFormatException
, por lo tanto; mi mapeo original ahora funciona bien.
No estoy seguro de qué versión de primavera se realizó este cambio de comportamiento.
String
tipo suministrado accidentalmente . user902383, eso es correcto, aunque para un valor entero preferiría que un valor nulo / vacío use el valor predeterminado en su lugar.