升级到spring 3.2.4之后的jQuery ajax调用期间的HttpMediaTypeNotAcceptableException

时间:2013-10-26 07:05:19

标签: jquery ajax spring maven jackson

我在进行jQuery ajax调用时得到HttpMediaTypeNotAcceptableException

我有以下配置。

在上下文中我(这是在类路径中)

<context:component-scan base-package=" group package" />
<mvc:annotation-driven />

我在servlet-config

<context:component-scan base-package="controller pacakges alone" />
<mvc:annotation-driven />

我在pom.xml中添加了jackson-mapper-asl 1.9.13并使用spring core 3.2.4security 3.1.4

我有一个jQuery ajax调用

$.ajax({
    url : "checkUser.html",
    cache : false,
    type : "post",
    data : "email=" + $('#email').val(),
    success : function(response) {
        success callback;
    }
});

我遇到了这个例外:

org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

2 个答案:

答案 0 :(得分:2)

这是一个更好的解释:http://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc

您可能希望设置可接受的媒体类型,如:

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

此外,您只需发送

等参数即可
var url = "/checkUser/" + $('#email').val() + ".htm";
    $.ajax({
        type: "POST",
        url: url,
        success: function(msg){
控制器中的

    @RequestMapping(value = "/checkUser/{email}",method = RequestMethod.POST)

答案 1 :(得分:0)

唉,我得到了它,下面改为配置内容协商的弹簧3.2版本导致了这个问题,因为默认情况下通过文件扩展名进行内容协商,我的页面在升级到3.2版本时停止工作。

http://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-config-content-negotiation

我已禁用上述文件媒体类型扩展名

<bean id="contentNegotiationManager"
    class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false" />
    <property name="favorParameter" value="true" />
    <property name="mediaTypes">
        <value>
            json=application/json
            xml=application/xml
        </value>
    </property>
</bean>

这篇文章了解更多信息。

HttpMediaTypeNotAcceptableException after upgrading to Spring 3.2