目前,我有这样的API:
@GetMapping(/user/{id})
public ResponseEntity<MyClass> getById(@PathVariable @Max(value = Long.MAX_VALUE, message= ID_LENGTH_EXCEED_MESSAGE) Long id) {
//some code here
return new ResponseEntity<>(HttpStatus.OK);
}
问题是当我像这样使用API时:
{baseUrl}/user/1111111111111111111111111111111111111111111
我收到这样的错误消息:
Failed to convert value of type 'java.lang.String' to required type 'long';
nested exception is java.lang.NumberFormatException: For input string:
"1111111111111111111111111111111111111111111"
您是否知道如何在path变量甚至请求参数中限制值的长度并获得自定义的受限消息?
答案 0 :(得分:1)
似乎Java无法处理太大的int或long数,因此无法处理为string并使用string的length属性处理并解析为int或long。
注意: 如果字符串的长度超过整数或long可以支持的长度,则可以使用return函数或任何回调函数。
Java变量范围:-
答案 1 :(得分:0)
Here介绍了如何引发自定义错误。我建议接受String
作为用户ID的value
。当value
的解析失败时,您可以抛出自定义错误。
答案 2 :(得分:0)
Long
更改为String
然后将该String值转换为如下所示的long:
Long idValue = Long.valueOf(Id);
现在在这里添加您现有的代码