上週用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改爲/的,一直懶的改,還有早點去看源碼就行了,都不會耽誤這麼長時間。。。調試