我不确定我是否遗漏了一些非常基本的东西,但这就是我想做的事。
我想对此地址进行rest API调用:
https://localhost:8080/fetchlocation?lat=-26.2041028&lng=28.0473051&radius=500
我的休息方法是:
public void fetchlocation(@RequestParam Long lat, @RequestParam Long lng, @RequestParam int radius){ //fetches location}
我收到此错误:
“timestamp”:1442751996949,“status”:400,“error”:“错误请求”, “exception”:“org.springframework.beans.TypeMismatchException”,
“message”:“无法将'java.lang.String'类型的值转换为 必填类型'java.lang.Long';嵌套异常是 java.lang.NumberFormatException:对于输入字符串:\“ - 26.2041028 \”“,
“path”:“/ fetchlocation”
我想这是因为当我进行GET调用时,rest API会接收坐标作为字符串而不是Longs。在进行调用时,如何确保其余API获取Longs而不是String值?
当我更改其余的API方法以将字符串作为参数时,我可以轻松地使用该方法,但对于类型检查,我更喜欢使用Longs。
public void fetchlocation(@RequestParam String lat, @RequestParam String lng, @RequestParam String radius){ //fetches location}
答案 0 :(得分:3)
您尝试转换为java.lang.Long
的数字为-26.2041028
。
您的号码包含.
(十进制)。 Long
s不允许这样做。您需要使用java.lang.Double
。
还可以使用L
的{{1}}或Long
D
来获取静态初始化。尽管不是必需的,但它使代码更具可读性。
赞,Double
-26.2041028D
。
答案 1 :(得分:-2)
您需要确保您转换为Long的字符串包含仅数字。这意味着例如像这样的字符串," 10d" 不能转换为Long,因此是例外。