2014-01-31 2 views
0

Получаю этот ответ, когда пытаюсь отправить объект JSON на сервер. Я проверил весь пост StackOverflow, но ничего не работает: со стороныКонтроллер Spring MVC выдает ошибку, не поддерживаемую для запроса JSON

Клиента:

function submitWOZ(){ 
var sub = { 
    "idNextexercise": parseInt($('#exList').val()), 
    "user": $('#user').val() 
    }; 
$.ajax({ 
    type: 'POST', 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
    }, 
    dataType : 'json', 
    url: "insertNextID", 
    //data: JSON.stringfy(sub), 
    data: sub, 
    success: function(data){ 
     alert('Great!'); 
    }, 
    error : function(jqXHR, status, error) { 
     alert('Sorry!, there was a problem'); 
    }, 
    complete : function(jqXHR, status) { 
     alert('Done!'); 
    } 
}); 

}

стороны

сервера:

@RequestMapping(value = "/insertNextID", method = RequestMethod.POST, consumes = {"application/xml", "application/json"}) 
public @ResponseBody String insertNextExercise(@RequestBody ExerciseVO messageForm, HttpServletRequest req){} 

Контекста-конфигурация:

<mvc:annotation-driven/> 

<mvc:resources mapping="/resources/**" location="/, classpath:/META-INF/web-resources/" /> 
<mvc:default-servlet-handler /> 

<!-- Thymeleaf template resolver --> 
<bean id="templateResolver" 
     class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"> 
    <property name="prefix" value="/WEB-INF/" /> 
    <property name="templateMode" value="HTML5" /> 
</bean> 

<!-- Thymeleaf Template Engine --> 
<bean id="templateEngine" 
     class="org.thymeleaf.spring3.SpringTemplateEngine"> 
    <property name="templateResolver" ref="templateResolver" /> 
    <property name="additionalDialects"> 
     <set> 
      <bean class="org.thymeleaf.extras.tiles2.dialect.TilesDialect"/> 
      <bean class="org.thymeleaf.extras.springsecurity3.dialect.SpringSecurityDialect"/> 
      <bean class="org.thymeleaf.extras.conditionalcomments.dialect.ConditionalCommentsDialect"/> 
     </set> 
    </property> 
</bean> 

<!-- Resolves logical view names returned by Controllers to Tiles; a view name to resolve is treated as the name of a tiles definition --> 
<bean id="tilesViewResolver" class="org.thymeleaf.spring3.view.AjaxThymeleafViewResolver"> 
    <property name="viewClass" value="org.thymeleaf.extras.tiles2.spring.web.view.FlowAjaxThymeleafTilesView"/> 
    <property name="templateEngine" ref="templateEngine"/> 
</bean> 

<!-- Configures the Tiles layout system using a specific thymeleaf-enabled Tiles Configurer --> 
<bean id="tilesConfigurer" class="org.thymeleaf.extras.tiles2.spring.web.configurer.ThymeleafTilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/**/views.xml</value> 
     </list> 
    </property> 
</bean> 

<bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 
    <property name="prefixJson" value="false" /> 
    <property name="supportedMediaTypes" value="application/json" /> 
</bean> 

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
    <property name="mediaTypes"> 
     <map> 
      <entry key="json" value="application/json" /> 
     </map> 
    </property> 

    <property name="defaultViews"> 
     <list> 
      <bean 
       class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"> 
       <property name="objectMapper"> 
        <ref bean="JacksonObjectMapper" /> 
       </property> 
      </bean> 
     </list> 
    </property> 
    <property name="favorPathExtension" value="false" /> 
    <property name="favorParameter" value="true" /> 
    <property name="useNotAcceptableStatusCode" value="true" /> 
</bean> 

<bean id="JacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" /> 

Никто может мне помочь? потому что я проверил все, что нашел в Интернете.

+0

mvc annoation driven означает, что вам не нужно поставлять бобы для конвертера содержимого/сообщений. Я попытался бы удалить их и потреблять при отображении запроса. – NimChimpsky

+0

У меня также были некоторые проблемы с такой реализацией. Я использовал этот пример здесь, может быть, вы сочтете это полезным: [Как создать службу RESTful с помощью Java с помощью JAX-RS и Джерси] (http://crunchify.com/how-to-build-restful-service-with-java- using-jax-rs-and-jersey /) –

+0

У вас есть сообщение об ошибке на сервере или в консоли браузера? –

ответ

0

Вы можете отладить его, добавив новый фильтр в web.xml, затем проверьте, выглядит ли запрос, который достигает сервера, как вы ожидаете. Если это нормально, попробуйте переопределить jsonHttpMessageConverter, добавьте его в свой конфигурационный файл контекста и просто проверьте, почему ваш вызов отклонен. Могло быть много причин, и я думаю, что единственный способ решить это - отследить ваш запрос на стороне сервера и найти место, где он застрял.

0

Я думаю, что проблема может заключаться в том, что необходимые парсеры JSON/XML не находятся в пути к классам, поэтому Spring MVC не может создавать контент запроса.

Для того, чтобы возвращать ответы в JSON/XML, необходимо иметь набор jars в пути к классам.

Например, для JSON мы обычно кладем анализатор Джексона в пути к классам, используя эти артефакты для версии 2.1:

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.1.3</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.1.3</version> 
</dependency> 

Точные артефакты зависят от синтаксического анализа используется и в случае Джексона также от версии. В более древних версиях использовались разные имена артефактов.

+0

Я добавляю эти зависимости к моему но результат тот же. Благодарю. – tludmetal

0
  1. попытка удаления (временно) весь потребляет параметр от контроллера, если это работает ...
  2. восстановить параметр Потребляет и попробуйте добавить contentType: "application/json" к вызову $ .ajax вместо в разделе заголовков.
+0

Я тестировал оба, но ничего. благодаря – tludmetal

Смежные вопросы