用ajax发送请求时报错,错误如下,求解决办法

真熙_cc 2013-07-23 11:49:58

java.lang.IllegalStateException: Optional long parameter 'cartId' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.handleNullValue(AbstractNamedValueMethodArgumentResolver.java:185)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:92)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:75)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:156)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:117)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at net.inno.commons.filter.SetOriginRequestUriFilter.doFilter(SetOriginRequestUriFilter.java:41)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at net.inno.commons.filter.SetCharacterEncodingFilter.doFilterInternal(SetCharacterEncodingFilter.java:92)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)



ajax请求如下

$("[delete-cart]").click(function(){
var $cartId = $(this).data("cartId");
$.box({
title:"删除商品",
message:"<div class='popbox_icon1' style='margin-left:50px;'>您确定删除该商品吗?</div>",
ok:function(){
$.myAjax({
type:"post",
url:$.frontPath + "/personal/deleteCart",
data:{carId:$cartId}
});
}
});

});


cartId为实体cart的属性
...全文
4559 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ten1123love 2016-04-13
  • 打赏
  • 举报
回复
post换成get试试 $.myAjax({ type:"get", url:$.frontPath + "/personal/deleteCart", data:{carId:$cartId} });
kyle1003 2015-07-16
  • 打赏
  • 举报
回复
报错是因为发布到服务器里的项目的原因。重启服务器或者把项目清理下重新发布就可以了。
  • 打赏
  • 举报
回复
我今天也遇到这个问题 原因 是 前台没有错误 后台方法里面 你一定是定义了一个cartId 但是并没有给他传值 所以导致这个问题
SinmleCliff 2014-01-10
  • 打赏
  • 举报
回复
java.lang.IllegalStateException: Optional int parameter 'start' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.
我也遇到这个异常了
rihaduo202 2013-07-24
  • 打赏
  • 举报
回复
太高深了,没看明白!
潮起潮落 2013-07-23
  • 打赏
  • 举报
回复
你的参数名是carId 但是其他地方好像都是cartId,排查一下?
真熙_cc 2013-07-23
  • 打赏
  • 举报
回复
引用 6 楼 showbo 的回复:
应该是 $('this').attr('data-cart-id') $(this).data是获取在此对象上建立的缓存,在获取值前调用过设置过缓存,如$(this).data('cartid',1231313),和自定义属性不一样,用错方法了 除非你同事写的插件有遍历过有这种属性的对象,然后调用$(this).data('cartid',$(this).attr('data-cart-id')),这样就能获取到值了,这个插件也算是多余了,直接获取自定义属性就好了,增加系统开销
没有用错,那个方法是这样用的,反复看了两次,应该是html5的方法,报错的原因也不是方法的问题,重启了一下服务器,就按照正常的运行了,至今我也不知道为什么会报那个错,不过还是感谢你那么细心的回答
tony4geek 2013-07-23
  • 打赏
  • 举报
回复
楼上很强大,哈哈。 路过
Go 旅城通票 2013-07-23
  • 打赏
  • 举报
回复
应该是 $('this').attr('data-cart-id') $(this).data是获取在此对象上建立的缓存,在获取值前调用过设置过缓存,如$(this).data('cartid',1231313),和自定义属性不一样,用错方法了 除非你同事写的插件有遍历过有这种属性的对象,然后调用$(this).data('cartid',$(this).attr('data-cart-id')),这样就能获取到值了,这个插件也算是多余了,直接获取自定义属性就好了,增加系统开销
真熙_cc 2013-07-23
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
cartid数据格式不正确吧。。cartid怎么设置的?如果是自定属性要使用$(this).attr('cartId') $(this).data("cartId")是缓存自定义数据,不是取自定义属性的。。要区分这2个方法
var $cartId = $(this).data("cartId");
alert($cartId)/////
百度一下知道了,原来是html5的规范,看来要努力学习才行,
真熙_cc 2013-07-23
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
cartid数据格式不正确吧。。cartid怎么设置的?如果是自定属性要使用$(this).attr('cartId') $(this).data("cartId")是缓存自定义数据,不是取自定义属性的。。要区分这2个方法
var $cartId = $(this).data("cartId");
alert($cartId)/////

<a href="javascript:;" class="orderList_delete" data-cart-id = "${cart.cartId }" delete-cart><i class="orderList_delete_icon png"></i>删除商品</a>
好像是同事写的插件,通过写data-cart-id = "${cart.cartId }",在js中就可以通过找到该节点,然后用$(this).data("cartId")来获取这个值,我是新手,其实我也不是很清楚,只是他们都叫我这么写,请问这是另外写的插件呢,还是本来就有这么一种写法,如果真的有,那是什么写法呢,谢谢
Go 旅城通票 2013-07-23
  • 打赏
  • 举报
回复
cartid数据格式不正确吧。。cartid怎么设置的?如果是自定属性要使用$(this).attr('cartId') $(this).data("cartId")是缓存自定义数据,不是取自定义属性的。。要区分这2个方法
var $cartId = $(this).data("cartId");
alert($cartId)/////
真熙_cc 2013-07-23
  • 打赏
  • 举报
回复
引用 1 楼 KongHuLu 的回复:
你的参数名是carId 但是其他地方好像都是cartId,排查一下?
非常感谢你那么细致的看问题,我犯了如此愚蠢的错误,不过那个错误依然存在

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧