转换@RequestParam值时忽略异常

时间:2013-10-23 10:42:10

标签: spring spring-mvc

我有一个带有请求参数的端点:http://localhost/test?parameter=123 当某人用字符串而不是整数调用此端点时,他会得到一个BAD_REQUEST响应,因为该字符串无法转换。

是否可以忽略请求参数上的转换异常并将其保留为空?`

目前我的代码如下:

@RequestMapping(value = "/test")
public void doSomething(@RequestParam(required = false) Integer parameter) {...}

1 个答案:

答案 0 :(得分:2)

您应该将参数作为String并转换为自己。

通过在方法签名中说它应该是Integer,你确实要求它是一个整数。如果不是,那确实是BAD_REQUEST。如果您想要其他自定义方案,您应该自己实现它。

@RequestMapping(value = "/test")
public void doSomething(@RequestParam(required = false) String parameter) {

    Integer parameterValue = null;

    if (parameter != null) {
        try {
           parameterValue = Integer.valueOf(parameter);
        } catch (NumberFormatException ex) {
           // No-op as already null
        }
    }

    // At this point the parameterValue is either null if not specified or specified as non-int, or has the integer value in it
}