Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.ClassCastException:无法强制转换java.util.LinkedHashMap_Java_Spring - Fatal编程技术网

java.lang.ClassCastException:无法强制转换java.util.LinkedHashMap

java.lang.ClassCastException:无法强制转换java.util.LinkedHashMap,java,spring,Java,Spring,javascript $.ajax({ headers : { 'Accept' : 'application/json' , 'Content-Type' : 'application/json' }, url : "/realgrid/product/addOd.do", type : "post", data : JSON.stringify(Js

javascript

$.ajax({     
    headers :  {  
        'Accept' :  'application/json' , 
        'Content-Type' :  'application/json'  
    },
    url         :  "/realgrid/product/addOd.do",
    type        : "post",
    data        : JSON.stringify(JsonOrderDetailValues),
    dataType    : "json",
    success     : function(data){
        var json = eval(data);
        if (json.result == 1) {
                alert("insert.");
        }else if(json.result == 2){
                alert("update.")
        }else {
            alert("error.");
        }
    },
    error : function(request,status,error){
        alert("code:"+request.status+"\n"+"error:"+error);
    }
});
console.log(JSONORDETAILVALUES)

java spring控制器

    @RequestMapping (value="/addOd.do",method=RequestMethod.POST)
public ModelAndView addOdMaster(@RequestBody List<OrderDetails> od){

         //java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast
    System.out.println(od.get(0).getNumber());

    Map<String, Integer> result = new HashMap<String,Integer>();
    result.put("result", 0);
    return new ModelAndView("jsonView",result);
}
错误消息

FATAL: Servlet.service() for servlet [dispatcher] in context with path [/realgrid] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.realgrid.productControl.model.OrderDetails] with root cause
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.realgrid.productControl.model.OrderDetails
    at com.realgrid.productControl.controller.ProductControlController.addOdMaster(ProductControlController.java:181)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
    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:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

为什么不呢?

在旧版本的Spring中,Spring无法(或者更确切地说是不会)确定这一点

@RequestBody List<OrderDetails> od
并将其用作参数

@RequestBody OrderDetailsList od

(或升级到Spring 4。)

您使用的是哪种Spring版本?或者您可以使用od.get(0.get(“number”)@vs4vijay,但实际上他们不能
get(0)
,由于泛型类型参数,返回一个
OrderDetails
,并且没有
get(String)
方法。实际返回的对象确实如此,但是
ClassCastException
正确地尽快中断操作。
@RequestBody List<OrderDetails> od
public class OrderDetailsList extends ArrayList<OrderDetails> {}
@RequestBody OrderDetailsList od