天天看点

springboot Failed to convert value of type ‘java.lang.String‘ to required type ‘java.lang.Long‘; nes

springboot项目请求时报错

Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type ‘java.lang.String’ to required type ‘java.lang.Long’; nested exception is java.lang.NumberFormatException: For input string: “XXX”]

从报错上看应该是参数类型转换错误,不过即使把参数全删了也还是会报错

var url = "http://localhost:8000/mmmm/rest/ytest/list_test?id=ss&param1.bb=a";

    var param1 = {
      'gfd': 'looooo'
    };

	$.ajax({
      url: url,
	  type: 'get',
      data: param1,
      success: function(data){
        console.log(data);
      }
    });
           
@PostMapping("list_test")
    public Object list_test(){
        return null;
    }
           

真正的报错原因在于http请求类型设置错误,改为

type: 'post',

即可。

需要注意的是其他错误也会报这个错,比如这个

var url = "http://localhost:8000/mmmm/rest/ytest/list_test11111111?id=ss&param1.bb=a";

    var param1 = {
      'gfd': 'looooo'
    };

	$.ajax({
      url: url,
	  type: 'get',
      data: param1,
      success: function(data){
        console.log(data);
      }
    });
           

这是一个项目中不存在的url,它也会报这个错。当然如果确实参数转化设置出现了错误,也是会报这个错。

其他令人意外的报错

Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'DELETE' not supported

单看报错你一定觉得是服务器本身不支持delete请求类型,或者是后台接受方法设置为了别的类型,比如post,但实际上我只是用delete请求了一个不存在的url。