SpringMVC异常报406 (Not Acceptable)的解决办法



使用SpsringMVC,使用restEasy调试,controller请求设置如下: 

Java代码   收藏代码
  1. @RequestMapping(value="/list",method=RequestMethod.GET,produces=MediaType.APPLICATION_JSON_VALUE)  
  2. @ResponseBody  
  3. public List<EditTimeout> list(){  
  4.      List<EditTimeout> list = editImpl.selectAll();  
  5.     return list;  
  6. }  


请求,debug跟踪list是返回值没有问题,但是前台页面报如下错误:  
Java代码   收藏代码
  1. Response Status: 406 (Not Acceptable)  


Response RAW返回值如下,(前半部分) 
Xml代码   收藏代码
  1. HTTP GET http://127.0.0.1:8080/onlineLibrary/rest/system/editTimeout/list  
  2. Host: 127.0.0.1:8080  
  3.   
  4.   
  5. 406 Not Acceptable  
  6. Date: Sat, 17 Aug 2013 11:01:07 GMT  
  7. Server: Apache-Coyote/1.1  
  8. Content-Length: 1067  
  9. Content-Type: text/html;charset=utf-8  
  10. <html><head><title>Apache Tomcat/7.0.34 - Error report</title><style>  


后台提示错误: 
Java代码   收藏代码
  1. 2013-08-17 19:01:03,116 DEBUG org.springframework.web.servlet.DispatcherServlet -Last-Modified value for [/onlineLibrary/rest/system/editTimeout/list] is: -1  
  2. 2013-08-17 19:01:07,606 DEBUG org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver -Resolving exception from handler [public java.util.List<com.online.ol.filter.EditTimeout> com.online.ol.filter.EditTimeoutContoller.list()]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation  
  3. 2013-08-17 19:01:07,680 DEBUG org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver -Resolving exception from handler [public java.util.List<com.online.ol.filter.EditTimeout> com.online.ol.filter.EditTimeoutContoller.list()]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation  
  4. 2013-08-17 19:01:07,681 DEBUG org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver -Resolving exception from handler [public java.util.List<com.online.ol.filter.EditTimeout> com.online.ol.filter.EditTimeoutContoller.list()]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation  


java.lang.Exception]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

引起的原因: 
   由于设置了@ResponseBody,要把对象转换成json格式,缺少转换依赖的jar包,故此错。 
解决办法: 
   加入依赖的jar,jackson-core-asl-1.9.12.jar,jackson-mapper-asl-1.9.12.jar问题解决。



pring 版本:3.2.4

跟踪到spring mvc中查看到的异常:
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

spring中抛出异常的方法:

org.springframework.web.servlet.DispatcherServlet.doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception

错误的方法代码:

1 @RequestMapping(value="awardByPage",produces="text/plain;charset=UTF-8")
2 public @ResponseBody JSONResponse awardByPage(@RequestParam int pageIndex) {
3    return JSONResponse.buildSuccess(awardService.awardLogByPage(pageIndex));
4 }

解决方案:

1. 删除代码中的:

1 ,produces="text/plain;charset=UTF-8"

2. 网络上查找的其它解决方案:

    

1 <!-- 启动JSON格式的配置 -->
2 <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">   
3 <!--解决 HttpMediaTypeNotAcceptableException: Could not find acceptable representation -->
4       <property name="supportedMediaTypes">
5            <list>
6                <value>text/html;charset=UTF-8</value>
7            </list>
8        </property>
9 </bean>

产生此问题的其它原因及解决方法:

1. controller中返回的内容没有get方法,

解决办法:添加get方法;

 

2. 由于设置了@ResponseBody,要把对象转换成json格式,缺少转换依赖的jar包,故此错。 
解决办法:    加入依赖的jar,jackson-core-asl-1.9.12.jar,jackson-mapper-asl-1.9.12.jar问题解决。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值