web-dev-qa-db-ja.com

Spring NumberFormatException:タイプ「Java.lang.String」の値を必要なタイプ「Java.lang.Long」に変換できませんでした

本当に基本的なものがないかどうかはわかりませんが、これは私がやりたいことです。

このアドレスにREST API呼び出しを行いたい:

https:// localhost:8080/fetchlocation?lat = -26.2041028&lng = 28.0473051&radius = 5

私の休息方法は:

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

私はこのエラーを受け取ります:

"timestamp":1442751996949、 "status":400、 "error": "Bad Request"、 "exception": "org.springframework.beans.TypeMismatchException"、
"message": "タイプ 'Java.lang.String'の値を必要なタイプ 'Java.lang.Long'に変換できませんでした。ネストされた例外はJava.lang.NumberFormatExceptionです:入力文字列:\"- 26.2041028\""、
"パス": "/ fetchlocation"

GET呼び出しを行うと、Rest APIがLongではなくStringとして座標を受け取るためだと思います。呼び出しが行われたときに、残りのAPIが文字列値ではなくLong値を取得するようにするにはどうすればよいですか?

パラメータとして文字列を受け取るように残りのAPIメソッドを変更すると、メソッドを簡単に機能させることができますが、型チェックにはLongを使用したいと思います。

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

Java.lang.Longに変換しようとしている番号は-26.2041028です。

番号に.(10進数)が含まれています。これはLongsでは許可されていません。 Java.lang.Doubleを使用する必要があります。

また、静的な初期化の場合は、Lの場合はLongを、Dの場合はDoubleを使用して数値を続けます。必須ではありませんが、コードが読みやすくなります。

Double-26.2041028Dなど。

5
Aditya Singh