好吧,当我向controller
发送数据时,我遇到了问题:
@RequestMapping("/someUrl")
public String method(@RequestParam Long id) {
//do something
}
所以,如果我发送字符串“null”我有异常
org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type [java.lang.String] to required type [java.lang.Long];
我明白为什么会这样,但我怎么能改变转换器?我希望字符串“null”转换为null。也许还有其他方法可以解决这个问题吗?
答案 0 :(得分:2)
要获得null,您不应该使用url中的参数并使用@RequestParam所需的属性
RequestMapping("/someUrl")
public String method(@RequestParam(required = false) Long id) {
//do something
}
然后请求http://example.com/someUrl
之类的网址或者,如果你真的需要发送' null'然后使用自定义转换器http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-typeconversion
答案 1 :(得分:1)
只需将ID的类型从Long
更改为String
,并且不要像@JEY建议那样将其设为
@RequestMapping("/someUrl")
public String method(@RequestParam(required = false) String id) {
if(id!=null)
Long l = Long.valueOf(id)
//do something
}