Spring MVC转换器

时间:2016-06-01 07:18:03

标签: java spring spring-mvc

好吧,当我向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。也许还有其他方法可以解决这个问题吗?

2 个答案:

答案 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
}