最佳答案
如果我有一个类似如下的请求映射:
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
然后调用这个请求:
http://example.com/test?i=
我收到了错误消息
未能将‘ java.lang. String’类型的值转换为‘ int’类型; 嵌套异常是 java.lang. NumberFormatException: 对于输入字符串: “”’
我可以通过停止 javascript 客户端发送空参数来解决这个问题,或者通过接受字符串值,并且只有当它们不是空的时候才进行解析。
更新 : Spring 的后续版本现在实现了最初想要的行为。
我在 Spring 4.3.5中刚刚测试过这个,发现这个行为现在实际上会将 null 值转换为默认值,而不会引发 NumberFormatException
,因此; 我最初的映射现在工作得很好。
我不确定这种行为的改变是春天的哪个版本。