2010-11-20 64 views
7

弹簧的xml:使用spring mvc3 @ResponseBody有415个Unsupported Media Type为什么?

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
    <property name="mediaTypes"> 
     <map> 
      <entry key="atom" value="application/atom+xml" /> 
      <entry key="html" value="text/html" /> 
      <entry key="json" value="application/json" /> 
     </map> 
    </property> 
    <property name="viewResolvers"> 
     <list> 
      <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" /> 
      <bean 
       class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
       <property name="prefix" value="/WEB-INF/views/" /> 
       <property name="suffix" value=".jsp" /> 
      </bean> 
     </list> 
    </property> 
    <property name="defaultViews"> 
     <list> 
      <bean 
       class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> 
     </list> 
    </property> 
</bean> 

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

<mvc:annotation-driven /> 

<context:annotation-config /> 

<context:component-scan base-package="org.lxh"></context:component-scan> 

代码是:

@RequestMapping(value = "/2wt/test.do",method=RequestMethod.POST) 
public @ResponseBody 
Map<String, ? extends Object> create(
     @RequestBody WtStandartype wtStandartype) { 
    System.out.println(wtStandartype.getId() + "--------"); 
    return Collections.singletonMap("id", wtStandartype.getId()); 

} 

JavaScript是:

jQuery.ajax({ 
       'type': 'POST', 
       'url': '/2wt/test.do',//'WtStandardTypeList.do?addto=updb', 
       'contentType': 'application/json', 
       'data': JSON.stringify(jsonuserinfo), 
       'dataType': 'json', 
       'error':function(){ 
        alert(222); 
       }, 
       'success': function(){ 
        alert(33333); 
       } 
      }); 

的web.xml是:

<?xml version="1.0"?> 
    <web-app> 
<display-name>jbpm</display-name> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:config/spring/applicationContext.xml 
    </param-value> 
    <description>Spring config file locations</description> 
</context-param> 


<listener> 
    <listener-class>com.gzgi.framework.context.StartupListener</listener-class> 
</listener> 

<listener> 
    <listener-class>com.gzgi.framework.startup.ShutdownListener</listener-class> 
</listener> 

<listener> 
    <listener-class>com.gzgi.framework.context.UserOnlineListener</listener-class> 
</listener> 

<listener> 
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
</listener> 

<listener> 
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> 
</listener> 

<filter> 
    <filter-name>EncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter 
    </filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 

<filter> 
    <filter-name>compressionFilter</filter-name> 
    <filter-class>com.gzgi.framework.web.filter.GZIPFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>EncodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<filter-mapping> 
    <filter-name>compressionFilter</filter-name> 
    <url-pattern>*.css</url-pattern> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>compressionFilter</filter-name> 
    <url-pattern>*.js</url-pattern> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>compressionFilter</filter-name> 
    <url-pattern>*.html</url-pattern> 
</filter-mapping> 

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>com.gzgi.framework.web.SpringDispatcherServlet</servlet-class> 
    <load-on-startup>5</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>resteasy</servlet-name> 
    <servlet-class>com.gzgi.framework.web.SpringDispatcherServlet</servlet-class> 
    <load-on-startup>6</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>resteasy</servlet-name> 
    <url-pattern>/rs/*</url-pattern> 
</servlet-mapping> 


<session-config> 
    <session-timeout>3600</session-timeout> 
</session-config> 


</web-app> 

我从阿贾克斯但Firefox视图提交的是415不支持的媒体类型

LIB有杰克逊映射器-ASL-1.5.6.jar杰克逊核心ASL-1.5.6.jar春季版是3.03

为什么提交不成功?

+0

我添加了一个web.xml但是我没有找到这个错误 – EdwardLau 2010-11-21 01:39:42

+1

你终于找到了解决这个问题的方法吗?我面对完全相同的问题。 – 2011-01-25 22:40:55

+0

有人解决了这个问题吗?这使我整天都拉我的头发。 – mobilekid 2011-09-18 18:19:19

回答

2

试着把一个明确的Accept标题:application/json

mvc-showcase示例Spring应用程序有一个消息转换器示例,它使用JQuery为Ajax请求读取json和xml到屏幕上,您可以尝试使用该示例为您的代码建模。

+0

没有为我工作。任何服务器端配置呢? – Filipiz 2011-08-07 22:08:35

+0

@BijuKunjummen:我想,这个头文件应该叫做'Accept-type'。 – 2012-10-19 13:34:52

+0

可以帮我对这个问题:http://stackoverflow.com/questions/18102452/spring-mvc-415-unsupported-media-type/18103943?noredirect = 1#comment26502825_18103943 – jackyesind 2013-08-07 17:18:37

相关问题