java.lang.UnsupportedOperationException через цепочку ссылок: java.util.HashMap - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть простой Spring mvc-код, написанный как показано ниже,

@RequestMapping(value = "/swxapps", method = RequestMethod.POST)
    public ModelAndView createSWXApps(
            @RequestParam(value = "customerid", required = true) long customerId,
            @RequestBody String requestBody,
            HttpServletRequest request, HttpServletResponse response) throws Exception{
            Map<String, Object> model = new HashMap<String, Object>();
            model.put(modelAndViewData.getModelAttributeName(),
            swxAppsService.createSWXApps(customerId, requestBody));
            return new ModelAndView(modelAndViewData.getViewName(), model);
    }

Я запускаю простой запрос POST для этого вызова метода и ожидаю, что ниже json взамен, как показано ниже,

{results={"_id":16593,"Created At":"Wed Dec 19 19:16:32 IST 2018"}}

Но я получаю ниже staacktrace в ответ на POSTMAN,

<code><html>
    <head>
        <title>Apache Tomcat/6.0.44 - Error report</title>
        <style>
            <!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}-->
        </style>
    </head>
    <body>
        <h1>HTTP Status 500 - (was java.lang.UnsupportedOperationException) (through reference chain: java.util.HashMap[&quot;results&quot;]-&gt;com.google.gson.JsonObject[&quot;asLong&quot;])</h1>
        <HR size="1" noshade="noshade">
        <p>
            <b>type</b> Exception report
        </p>
        <p>
            <b>message</b>
            <u>(was java.lang.UnsupportedOperationException) (through reference chain: java.util.HashMap[&quot;results&quot;]-&gt;com.google.gson.JsonObject[&quot;asLong&quot;])</u>
        </p>
        <p>
            <b>description</b>
            <u>The server encountered an internal error that prevented it from fulfilling this request.</u>
        </p>
        <p>
            <b>exception</b>
            <pre>org.codehaus.jackson.map.JsonMappingException: (was java.lang.UnsupportedOperationException) (through reference chain: java.util.HashMap[&quot;results&quot;]-&gt;com.google.gson.JsonObject[&quot;asLong&quot;])
    org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:218)
    org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:183)
    org.codehaus.jackson.map.ser.std.SerializerBase.wrapAndThrow(SerializerBase.java:140)
    org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:158)
    org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
    org.codehaus.jackson.map.ser.std.MapSerializer.serializeFields(MapSerializer.java:262)
    org.codehaus.jackson.map.ser.std.MapSerializer.serialize(MapSerializer.java:186)
    org.codehaus.jackson.map.ser.std.MapSerializer.serialize(MapSerializer.java:23)
    org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610)
    org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)
    org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1613)
    org.springframework.web.servlet.view.json.MappingJacksonJsonView.renderMergedOutputModel(MappingJacksonJsonView.java:151)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

первопричина

java.lang.UnsupportedOperationException
    com.google.gson.JsonElement.getAsLong(JsonElement.java:223)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:622)
    org.codehaus.jackson.map.ser.BeanPropertyWriter.get(BeanPropertyWriter.java:483)
    org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:418)
    org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
    org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
    org.codehaus.jackson.map.ser.std.MapSerializer.serializeFields(MapSerializer.java:262)
    org.codehaus.jackson.map.ser.std.MapSerializer.serialize(MapSerializer.java:186)
    org.codehaus.jackson.map.ser.std.MapSerializer.serialize(MapSerializer.java:23)
    org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610)
    org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)
    org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1613)
    org.springframework.web.servlet.view.json.MappingJacksonJsonView.renderMergedOutputModel(MappingJacksonJsonView.java:151)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

note Полная трассировка стека основной причины доступна в журналах Apache Tomcat / 6.0.44.

Apache Tomcat / 6.0.44

1 Ответ

0 голосов
/ 20 декабря 2018

В трассировке стека это дает исключение для отображения Json.Это происходит, когда сопоставление модели и вида не совпадает.Здесь вид возврата к контроллеру - gson View, а модель - от Jackson View.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...