sPRing3.0升級(jí)到4.2之后,遇到了一些很搞的問(wèn)題,困擾了我很長(zhǎng)時(shí)間,網(wǎng)上也搜索了很久,沒(méi)有解決我的問(wèn)題。不過(guò)現(xiàn)在問(wèn)題解決了,決定分享一下,方便那些遇到跟我一樣問(wèn)題的朋友。
不過(guò)也產(chǎn)生了一些新的問(wèn)題,很希望哪位朋友能給我一些提示。
首先第一個(gè)問(wèn)題就是很經(jīng)典的404,明明我后臺(tái)已經(jīng)進(jìn)去了,代碼也執(zhí)行完了,并且沒(méi)有出現(xiàn)任何問(wèn)題,也正常返回,可是為何Ajax代碼一直進(jìn)error,不進(jìn)success? 于是打印錯(cuò)誤信息: xmlHttpRequest.status:404 xmlhttpRequest.readyState:4 textStatus:error XMLHttpRequest.readyState=4,表示響應(yīng)內(nèi)容解析完成,可以在客戶端調(diào)用了,這我就更郁悶了,既然不是后臺(tái)的問(wèn)題,那么是jquery有問(wèn)題?。so又在瀏覽器直接輸入url看看能不能返回json串,于是solo了一把,結(jié)果把我驚艷了:
第一:我返回的是json,它為何是個(gè)jsp?第二:我沒(méi)有這個(gè)jsp!第三:這個(gè)jsp的名稱看起來(lái)是我的函數(shù)名?好了事已至此看來(lái)還是后臺(tái)的問(wèn)題,于是問(wèn)題又回到了后臺(tái)上,看起來(lái)后臺(tái)沒(méi)有返回json而是jsp,jsp名稱默認(rèn)為我的函數(shù)名,而我又沒(méi)有這個(gè)jsp,所以導(dǎo)致404,那么著重點(diǎn)就放在了為何會(huì)出現(xiàn)這種情況。
后來(lái)經(jīng)過(guò)堅(jiān)持不懈的調(diào)試以及對(duì)比,發(fā)現(xiàn)是map的問(wèn)題,于是修改代碼,自己實(shí)例化一個(gè)map,問(wèn)題得以解決。具體代碼如下: 修改前:
修改后:
后來(lái)經(jīng)過(guò)兩個(gè)map的對(duì)比,發(fā)現(xiàn)函數(shù)中作為參數(shù)傳進(jìn)來(lái)的map,比自己實(shí)例化的map多兩個(gè)屬性,有圖有真相:
就這么稍微改了下,404頭也不回的就走了。由此產(chǎn)生了幾個(gè)新的問(wèn)題,第一:是這多出來(lái)的兩個(gè)屬性中的哪一個(gè)導(dǎo)致的404,第二:為什么會(huì)返回html而不是json,這兩個(gè)問(wèn)題我還沒(méi)有搞清楚,非常希望哪位大神來(lái)幫忙解答一下
你以為這樣就結(jié)束了?當(dāng)然沒(méi)有,406不期而至,由于404已經(jīng)差不多耗干了我的腦細(xì)胞,所以406一記重拳差點(diǎn)把我打哭,可是木有辦法,咬牙接著百度。
406:表示服務(wù)器生成的響應(yīng)無(wú)法被客戶端所接受,現(xiàn)在說(shuō)明結(jié)果是能正確的返回到正確的頁(yè)面了,可是又出現(xiàn)這種問(wèn)題?之前明明是好的啊~~~~!why?tell me why?
百度了好久,總算是發(fā)現(xiàn)了一些有用的線索,spring3.1及以后的版本,requestedMediaTypes由[*/*]變成了[text/html],而producibleMediaTypes都是[application/json],可參考http://blog.csdn.net/gbtyy/article/details/17165605
由此可見(jiàn)spring3.1之后的版本,默認(rèn)的編碼方式變成了[text/html],而工程后綴如果為.html,則會(huì)采用這種默認(rèn)的編碼方式,此時(shí)采用@ResponseBody注解進(jìn)行json自動(dòng)轉(zhuǎn)換當(dāng)然會(huì)出現(xiàn)406。并且很不巧的是本人的工程后綴又恰好是.html,簡(jiǎn)直是可喜可賀!
so,知道原因后解決起來(lái)當(dāng)然簡(jiǎn)單多了。本人親身試驗(yàn)的幾個(gè)解決辦法: 第一:在不改變?cè)械膕pring-mvc配置文件的情況下,改變你的工程后綴!讓.html見(jiàn)鬼去吧。
第二:依然采用.html為后綴,不過(guò)要修改<mvc:annotation-driven/>配置,改成:
至此問(wèn)題全部解決!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注