タイプ「java.lang.String」の値を必要なタイプ「java.lang.Long」に変換できませんでした。常にリクエスト パラメータ タイプ エラーが表示される

型 'java.lang.String' の値を必要な型 'java.lang.Long' に変換できませんでした。パラメータの型が間違っていると常に表示されます。インターフェイスが適切に記述されていない可能性がありますか?

今日はとんでもないミスをしてしまった

インターフェースを作成した後、常にインターフェースに入ることができず、常にエラーが報告されます。

Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "getUserPostCode"

実装クラスとMapperデータが正常にクエリできることをテストしましたが、デバッグインターフェイスに入ることができません。

試してみたところ、パラメータの型が間違っていると表示されました。
しかし、私のインターフェースは明らかにパラメータを書き込んでいませんでした、超自然的な出来事ですか?

ここに画像の説明を挿入
後で、フロントエンドがリクエストを送信したときにパスが間違って書かれていたことがわかりました。

しかし、ナレッジポイントに遭遇しました
/businessPaymentApply/info/getUserPostCode これは正しいインターフェイス パスです。
/businessPaymentBatch/info/getUserPostCode これは、以前書いていた間違ったインターフェイス パス (つまり、フロント エンドで間違って書いたパス) です
。フロントエンドでパスを書いたときに間違ったパスを書きました。そして明らかに、インターフェース クラス businessPaymentBatch に getUserPostCode インターフェースを書きませんでした。エラー 404 を表示する代わりに、実際にはエラー型変換エラーを表示しました。

後で、businessPaymentBatch クラスに get リクエスト インターフェイスを記述したことがわかり、
ここに画像の説明を挿入
送信したリクエストがここに来ました。明らかにパラメータを渡していないと言いましたが、渡したパラメータは常に String であると言いました。そしてそれは今でも変わりません。 「getUserPostCode」、これは私のインターフェース名です。

理由は、businessPaymentBatch クラスに getUserPostCode インターフェイスを書いていないためで、フロントエンドに書いたリクエストが GET リクエストなので、バックグラウンドは直接 businessPaymentBatch の GET インターフェイスに行き、このインターフェイスは PathVariable なので、 PathVariable パスを置き換えるには、「 getUserPostCode」インターフェイス名を直接入力します。そのため、String を Long に変換できず、必要なパラメーターは Long 型であるといつも言っていますが、String 型を指定しました。

実際、この
@GetMapping("/{businessPaymentBatchId}") は@GetMapping("/getUserPostCode")
に非常に似ています。この方法で記述することはお勧めできません。前にパスを追加することをお勧めします。例: @GetMapping("/business/{ businessPaymentBatchId}")@GetMapping("/postCode/getUserPostCode") は異なるため、区別されます。





おすすめ

転載: blog.csdn.net/qq_44627822/article/details/128562873