上周用spring mvc 写接口,使用的是3.2.8版本,调试出现could not find acceptable representation错误,网上都是说缺乏那两个json包,我已经加上了。尝试了不少办法都没有解决(主要是在配置文件上折腾了好久),最后不得不去debug源码。html
在AbstractMessageConverterMethodProcessor中java
for (MediaType r : requestedMediaTypes) { for (MediaType p : producibleMediaTypes) { if (r.isCompatibleWith(p)) { compatibleMediaTypes.add(getMostSpecificMediaType(r, p)); } } }
requestedMediaTypes返回的是text/htmlspring
而后json
if (compatibleMediaTypes.isEmpty()) { throw new HttpMediaTypeNotAcceptableException(producibleMediaTypes); }
就抛了错误,接着去对比以前一个项目,这个项目的spring mvc版本和如今的版本一致,只是底层有些东西不同,发现这个项目返回的是*/*。mvc
后来通过研究是这两个项目请求的后缀不同,这个项目的后缀是.htm,以前的没有后缀,接着把xml里的拦截后缀也改为/就成功返回json了。.net
http://blog.csdn.net/gbtyy/article/details/17165605 这篇讲的很详细,能够看看。debug
这个问题真是搞了很久,以前就想把.htm改为/的,一直懒的改,还有早点去看源码就行了,都不会耽误这么长时间。。。调试