如果我有一个类似于以下内容的请求映射:
@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客户端发送空参数或接受字符串值并仅在未发现空白的情况下进行解析来解决此问题。
更新:春季的更高版本现在实现了最初想要的行为。
我刚刚在春季4.3.5中对此进行了测试,发现该行为实际上实际上会将null值转换为默认值而不会引发NumberFormatException
,因此;我原来的映射现在可以正常工作了。
我不确定此行为更改是在Spring的哪个版本上进行的。
确定参数将是引发该异常的Integer类型?
—
laher 2012年
即时消息不是spring expert,但未设置时使用默认值吗?即,如果您的请求是example.com/test?当您使用example.com/test?i=时,我就存在并设置为“”,因此不使用默认值
—
user902383 2012年
谢谢amir75,偶然提供的
—
Brett Ryan
String
类型。user902383,这是正确的,尽管对于整数值,我更希望null / empty值使用defaultValue代替。