Failed to bind request element:

错误的具体内容是:2018-12-03 12:40:06.850 [http-nio-80-exec-3] WARN  o.s.w.s.m.support.DefaultHandlerExceptionResolver - Failed to bind request element: org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: "orderBook"。

检查了半天,感觉自己程序上没写错,但是后来通过自己的检查发现了自己的错误!我这里的逻辑的是同一个带参的url去请求一个页面,然后在页面中有通过ajax提交数据。

错误代码:

@RequestMapping("/bookinfo/{id}")
	public String deGet(HttpServletRequest request,
			HttpServletResponse response, @PathVariable(name = "id") int id,
			Model model) throws ServletException, IOException {
 $.ajax({
    	   type:"post",
    	   contentType:"application/json",
    	   data:data,
           url:"/borrow/book",
		   dataType:"json",
           success: function (datas) {
      
        	 if(datas==1){
                 alert("请将书自己取出");
                 }
        	 else if(datas==2){
        		 alert("您最多借三本书");
        	 }
                 else{
                     var m=confirm("其他人已经借走,你要预定吗?");
                     if(m==true){
                         var a="[[${bookinfo1.id}]]";
                         var b="[[${bookinfo1.bookname}]]";
                         var c="[[${bookinfo1.book}]]";
                         var d=$("#time").val();

                         dldata={"time":d,"id":a,"openid":b,"book":c};
                         var data=JSON.stringify(dldata);

                         $.ajax({
                             url:"/orderBook",
                             type:"post",
                             data:data,
                             contentType:"application/json",
                             dataType:"json",
                             success:function(datas){
                                 /*执行的函数*/
                                ....

我这两次上传,第一个ajax上传的url并不会出错,但是第二个就会出错,原因是因为我的第一个映射是:/bookinfo/{id},而后面的都是没有/{id}的,也就是没有这个参数,程序会把我的url当成int类型的参数,而我的url是String类型的,因此就会出现这个错误。其实解决方法有两种,第一种是在/bookinfo/{id}的后面再加上一个/name,这个加上什么都行,这里只是个例子。

或者就是在我其他url后面加上带参数的url:如一下代码所示:

 $.ajax({
                             url:"/orderBook/1",
                             type:"post",
                             data:data,
                             contentType:"application/json",
                             dataType:"json",

虽然带上了一个参数,但是你在controller层可以不用传递过去的参数,之后就会发现,错误已经解决!。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值