廢話不多說,各位,直接看圖說話,敢嗎?這個問題網上解決的辦法寫的狠是粗糙,甚至說這次我干掉它完全是靠巧合,但是也不否認網上針對406錯誤給出的解決方式,可能是多種情況下出現的406吧?我這次的流程就是集成了MyBatis的分頁插件,簡單實現了一個分頁功能,最后將數據返回給瀏覽器,就因為我的隨手一粘貼,才引發了這場406,別忘了各位看圖說話。
我首先說說我的慘痛經歷吧,一直對spring框架的AOP原理狠是模糊,就在上周五自己想好好研究一下,但是很多美好的事情都不是那么一路綠燈,磕磕絆絆總算是差不多了,但是在最后給我返回一個406錯誤,這可是我第一次碰到這種傻逼錯誤,真的,對於我這個2年的猿來說確實有點手忙錯亂,最后我靠着網上的一些指點憑直覺把它干掉了,在這里給分為分享一下。
在使用SpringMVC的@RequestMapping注解時注意,如果你為了解決http請求響應的亂碼問題,執意在@RequestMapping注解上使用produces屬性來快速解決,那么這時候你可要注意了,假如你給瀏覽器返回一個對象並且使用@ResponseBody注解自動轉成json數據返回的同時並且使用了produces屬性來解決亂碼問題,那么情況就不是太理想了,406隨之而來。
1 @RequestMapping(value="/itemsPage",method=RequestMethod.GET,produces = "text/plain;charset=UTF-8") 2 @ResponseBody 3 public List<Item> itemsPage(String currentPage,String pageSize){ 4 return itemService.findItemByPage(Integer.parseInt(currentPage), Integer.parseInt(pageSize)); 5 }
這種錯誤我理解還不是狠透徹,但是我暫時把解決方式給各位分享一下,如果后期能得到高人的指點,會繼續完善這篇博文,解決這種問題的方式有倆種:一是直接將produces屬性去掉,萬一出現了亂碼則在配置文件或編解碼的方式處理,二是先將對象轉成json數據,然后可以使用produces屬性解決亂碼問題。
解決方式一:
1 @RequestMapping(value="/itemsPage",method=RequestMethod.GET) 2 @ResponseBody 3 public List<Item> itemsPage(String currentPage,String pageSize){ 4 return itemService.findItemByPage(Integer.parseInt(currentPage), Integer.parseInt(pageSize)); 5 }
解決方式二:
1 @RequestMapping(value="/itemsPage",method=RequestMethod.GET,produces = "text/plain;charset=UTF-8") 2 @ResponseBody 3 public String itemsPage(String currentPage,String pageSize){ 4 List<Item> PageItems = itemService.findItemByPage(Integer.parseInt(currentPage), Integer.parseInt(pageSize)); 5 return JsonUtil.object2Json(PageItems); 6 }