Spring MVC Spring NumberError Exception:无法将类型“java.lang.String”的值转换为所需的类型“java.lang.Long

pprl5pva  于 12个月前  发布在  Spring
关注(0)|答案(3)|浏览(166)

我不确定我是否错过了一些真正基本的东西,但这就是我想做的。
我想对以下地址进行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}

我得到这个错误:
“时间戳”:1442751996949,“状态”:400,“错误”:“错误请求”,“异常”:“org.springframework.beans.TypeMismatchException”,
“留言”:“无法将类型”java.lang.String“的值转换为所需类型”java.lang. Long“;嵌套异常为java.lang. NumberError异常:对于输入字符串:"-26.2041028"",
“path”:“/fetchlocation”
我猜这是因为当我进行GET调用时,rest API接收的坐标是String而不是Long。我如何确保在进行调用时,rest API获得的是Long而不是String值?
当我将其余的API方法改为使用String作为参数时,我可以很容易地使该方法工作,但对于类型检查,我更喜欢使用Long。

public void fetchlocation(@RequestParam String lat, @RequestParam String lng, @RequestParam String radius){ //fetches location}
qhhrdooz

qhhrdooz1#

您尝试转换为java.lang.Long的数字是-26.2041028
您的数字包含.(十进制)。这不允许用于Long s。您需要使用java.lang.Double
对于静态初始化,也可以用L代替Long,或者用D代替Double。尽管这不是必需的,但它使代码更具可读性。
比如-26.2041028DDouble

iklwldmw

iklwldmw2#

看起来你可能正在使用GET请求而不是POST请求。

zwghvu4y

zwghvu4y3#

您需要确保要转换为Long的String只包含 * 数字。这意味着例如像这样的字符串,**“10d”**不能转换为Long,因此出现异常。

相关问题