背景說明:
環境:IDEA java語言 springmvc.xml 配置 需要用到fastjson jackson pom.xml中配置了需要用到的包,springmvc.xml中也寫了注解驅動
Controller中返回Object類型
到返回Map類型的時候
Controller中代碼如下:
@RequestMapping(name="/returnMap.do")
@RequestMapping("/returnMap.do") @ResponseBody //將返回值添加到響應體中 public Object returnMap()throws Exception{ Map<String,String> map = new HashMap<>(); map.put("hello","你好"); map.put("World","先生"); return map; }
運行報: java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.HashMap 說明:首要要看一下library是否導進去,也就是自己寫完pom.xml之后有沒有reimport,其次看一下注解驅動有沒有配置,也就是jackson的那三個包,最后再從其他方面找原因。百度后,又說fastjson版本的問題的,試了無果,加了個
<mvc:annotation-driven> <mvc:message-converters> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"/> </mvc:message-converters> </mvc:annotation-driven>
也沒解決,后邊還添加 :
<!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency>
然后就換成了報:java.lang.IllegalArgumentException: 'Content-Type' cannot contain wildcard type '*'
然后又是一頓百度,試了各種方法還是沒能解決問題
然后就看到了下邊這個試了一下:錯誤消除,代碼如下
@RequestMapping(name="/returnMap.do",consumes = MediaType.APPLICATION_JSON_VALUE) @ResponseBody //將返回值添加到響應體中 public Object returnMap()throws Exception{ Map<String,String> map = new HashMap<>(); map.put("hello","你好"); map.put("World","先生"); return map; }
改變部分:
@RequestMapping(name="/returnMap.do",consumes = MediaType.APPLICATION_JSON_VALUE)
注意對比 你就會發現哦!
所以導致最后自己都不知道到底是因為那個解決了問題😓
BUT,啟動后才返現返回來的消息是:
參考鏈接:
http://www.mamicode.com/info-detail-2562906.html
所以,最終還是沒能解決問題!
周末有時間又回來繼續啃這個,再次從頭分析問題,首先,注解有,其次包在項目里,不在模塊里,試了把包放在模塊下,reimport,重啟,問題解決!按道理說模塊里的包可以放到項目下邊,項目下邊的包模塊里也可以用,但是這個問題確實是由於模塊下沒有包導致的!
折騰了一大圈,還是回到了問題的起點!所以萬變不離其宗,基礎不牢,地動山搖!