No se pudo convertir el valor del tipo 'java.lang.String' al tipo requerido 'java.lang.Long' siempre dice error de tipo de parámetro de solicitud

Error al convertir el valor del tipo 'java.lang.String' al tipo requerido 'java.lang.Long' siempre dice que el tipo de parámetro es incorrecto. ¿Podría ser que la interfaz no esté bien escrita?

Cometí un error súper tonto hoy

Después de escribir la interfaz, siempre no puedo ingresar a la interfaz y siempre informo un error:

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"

Probé que la clase de implementación y los datos de Mapper se pueden consultar normalmente, ¡pero no puedo ingresar a la interfaz de depuración!

Cuando lo probé, decía que mi tipo de parámetro era incorrecto.
Pero mi interfaz obviamente no escribió parámetros, ¿evento sobrenatural?

inserte la descripción de la imagen aquí
Más tarde, descubrí que la ruta estaba mal escrita cuando mi front-end envió la solicitud.

Pero accidentalmente descubrí un punto de conocimiento ,
/businessPaymentApply/info/getUserPostCode Esta es la ruta de interfaz correcta
/businessPaymentBatch/info/getUserPostCode Esta es la ruta de interfaz incorrecta (es decir, la ruta que escribí mal en el front-end
) en la interfaz, escribí esta ruta incorrecta cuando escribí la ruta, y obviamente no escribí la interfaz getUserPostCode en la clase de interfaz businessPaymentBatch. En lugar de darme un error 404, en realidad me dio un error de conversión de tipo de error.

Más tarde, descubrí que escribí una interfaz de solicitud de obtención en la clase businessPaymentBatch,
inserte la descripción de la imagen aquí
por lo que la solicitud que envié vino aquí. Dije que obviamente no pasé parámetros, pero siempre dije que los parámetros que pasé fueron String. Y sigue siendo "getUserPostCode", este es el nombre de mi interfaz.

La razón es que no escribí la interfaz getUserPostCode en la clase businessPaymentBatch. Dado que la solicitud que escribí en el front-end es una solicitud GET, el fondo va directamente a la interfaz GET en businessPaymentBatch, y esta interfaz es PathVariable, así que directamente puse el nombre de mi interfaz "getUserPostCode" para reemplazar la ruta PathVariable, por lo que siempre digo que no puedo convertir String a Long, y el parámetro requerido es de tipo Long, pero le diste el tipo String.

Entonces, de hecho, este
@GetMapping("/{businessPaymentBatchId}") es muy similar
a
@GetMapping("/getUserPostCode")
, no se recomienda escribir de esta manera, es mejor agregar una ruta delante de ellos, para ejemplo:
@GetMapping("/business/{ businessPaymentBatchId}")
y
@GetMapping("/postCode/getUserPostCode")
son diferentes, por lo que se distinguen.

Supongo que te gusta

Origin blog.csdn.net/qq_44627822/article/details/128562873
Recomendado
Clasificación