si tengo aa mapeo petición similar a la siguiente:¿Es posible tener valores de RequestParam vacíos usando el valor predeterminado?
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
y luego llamar a esta petición con:
http://example.com/test?i=
me sale el mensaje de error
Error al convertir el valor de escriba 'java.lang.String' para escribir 'int'; la excepción jerarquizada es java.lang.NumberFormatException: Para cadena de entrada: ""'
puedo solucionar esto ya sea deteniendo el cliente JavaScript desde el envío de parámetros vacíos, o mediante la aceptación de los valores de cadena y sólo analizar si ellos no se encuentran estar en blanco
ACTUALIZACIÓN: Las versiones posteriores del resorte ahora implementan el comportamiento originalmente deseado.
Acabo de probar esto en la primavera 4.3.5 y he encontrado que el comportamiento ahora de hecho convertirá el valor nulo en el valor predeterminado sin aumentar un NumberFormatException
, por lo tanto; mi mapeo original ahora funciona bien.
No estoy seguro de qué versión de la primavera se realizó este cambio de comportamiento.
¿De seguro el parámetro sería un tipo de Entero para levantar esa excepción? – laher
¿No soy experto en muelles, pero el valor predeterminado se usa cuando no lo configura? es decir, si su solicitud será http://example.com/test? a medida que utiliza http://example.com/test?i=, entonces i está presente y configurado en "", por lo que no se usa el valor predeterminado – user902383
Gracias amir75, tipo 'String' proporcionado accidentalmente. user902383, eso es correcto, aunque para un valor entero, preferiría que un valor nulo/vacío usara el valor predeterminado en su lugar. –