`

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

阅读更多
使用SpsringMVC,使用restEasy调试,controller请求设置如下:
 @RequestMapping(value="/list",method=RequestMethod.GET,produces=MediaType.APPLICATION_JSON_VALUE)
	@ResponseBody
	public List<EditTimeout> list(){
		 List<EditTimeout> list = editImpl.selectAll();
		return list;
	}


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


Response RAW返回值如下,(前半部分)
HTTP GET http://127.0.0.1:8080/onlineLibrary/rest/system/editTimeout/list
Host: 127.0.0.1:8080


406 Not Acceptable
Date: Sat, 17 Aug 2013 11:01:07 GMT
Server: Apache-Coyote/1.1
Content-Length: 1067
Content-Type: text/html;charset=utf-8
<html><head><title>Apache Tomcat/7.0.34 - Error report</title><style>


后台提示错误:
2013-08-17 19:01:03,116 DEBUG org.springframework.web.servlet.DispatcherServlet -Last-Modified value for [/onlineLibrary/rest/system/editTimeout/list] is: -1
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
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
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




引起的原因:
   由于设置了@ResponseBody,要把对象转换成json格式,缺少转换依赖的jar包,故此错。
解决办法:
   加入依赖的jar,jackson-core-asl-1.9.12.jar,jackson-mapper-asl-1.9.12.jar问题解决。
7
12
分享到:
评论
11 楼 HarryMa 2018-01-05  
v 
10 楼 HarryMa 2018-01-05  
[i][/i]。。 
9 楼 lingyun6100 2017-10-31  
我也遇到同样问题,我的错误原因是错引用了JSONObject。  应该引用com.alibaba.fastjson.JSONObject,  我错引用了org.json.JSONObject.
8 楼 cbn_1992 2017-08-16  
972974124 写道
换了json的jar包还是不好用,我把dispatcher-servlet.xml中的开启注解换成<mvc:annocation-driven/>就好用了,原来用的是<context:annocation-config>标签,希望可以帮到你

你这是正确答案
7 楼 u012968912 2016-06-13  
   
5 楼 972974124 2015-07-03  
换了json的jar包还是不好用,我把dispatcher-servlet.xml中的开启注解换成<mvc:annocation-driven/>就好用了,原来用的是<context:annocation-config>标签,希望可以帮到你
4 楼 ouzengqi2010 2015-02-11  
感谢  问题解决了
3 楼 di1984HIT 2014-11-06  
写的很好啊
2 楼 u013187893 2014-10-13  
试了,不起作用
1 楼 love_you_girl 2014-04-30  
我提示的错误跟你的不一样,我自己定义输出json字符串, 例如这样:
public void outJsonString(HttpServletResponse response, Object object) {
        response.setContentType("text/javascript;charset=UTF-8");
        response.setHeader("Cache-Control", "no-store, max-age=0, no-cache, must-revalidate");
        response.addHeader("Cache-Control", "post-check=0, pre-check=0");
        response.setHeader("Pragma", "no-cache");
        try {
            PrintWriter out = response.getWriter();
            out.write(BaseAjaxController.toJson(object));
            out.close();
        } catch (IOException e) {
            logger.warn("BaseAjaxController | outJsonString | " + object + " | error:" + e.getMessage());
        }
    }
然后就没有报406了

相关推荐

Global site tag (gtag.js) - Google Analytics