Spring版本4.2.0,Hibernate 4.1.4
这是我的Controller
函数:
@RequestMapping(value = "/mobile/getcomp", method = RequestMethod.GET)
@ResponseBody
public List<Company> listforCompanies() {
List<Company> listOfCompanies= new ArrayList<Company>();
listOfCompanies = companyManager.getAllCompanies();
return listOfCompanies;
}
杰出的JSON映射器依赖Pom.xml
:
<!-- Jackson JSON Mapper -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson.version}</version>
</dependency>
获取ArrayList
中的列表,但返回时会显示以下错误:
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/IrApp] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList] with root cause
java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList
at org.springframework.util.Assert.isTrue(Assert.java:68)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:124)
Link我跟随的例子。
答案 0 :(得分:99)
将以下依赖项添加到您的pom.xml:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.0</version>
</dependency>
答案 1 :(得分:83)
我遇到了同样的问题。自从我使用@ResponseBody
以来,我没有放@RestController
。但是我仍然遇到错误,因为我没有为公司类放置getter/setter
方法。所以放完getter/setter
我的问题就解决了。
答案 2 :(得分:9)
您还需要确保返回的bean不为空(并且可以由Jackson序列化)。在我的特定情况下,我尝试返回一个没有getter和setter的对象实例,没有任何jackson注释,并且字段等于null。我得到了以下信息:
Workspace openContents: 'GTPlayground setGTPlaygroundEnabledStatus: false.
" ========== Debuggers ========== "
Nautilus pluginClasses: nil.
SpecDebugger closeAllDebuggers.
GTGenericStackDebugger closeAllDebuggers.
GTGenericStackDebugger setGTDebuggerEnabledStatus: false.
" ========== Miscellany ========== "
GTInspector setGTInspectorEnabledStatus: false.
GTExampleOrganizer stop.
GTEventRecorder cleanUp.
GTEventRecorderSettings cleanUp.
GTSnippets reset.
GTPlayBook reset.
GTPlayBook resetDirectories.
GTSpotter cleanUp.
GTSpotterGlobalShortcut reset.
GlobalIdentifier cleanUp.
Privacy cleanUp.
" ========== QA ========== "
QASettings inspectorPluggin: false.
QASettings spotterPlugin: false.
QAEventCollector unload.
(MCPackage named: ''QualityAssistant'') unload.
" ========== RPackage ========== "
RPackageOrganizer default packageNames
select: [ :each | each beginsWith: ''GT'' ]
thenDo: [ :each |
(MCPackage named: each) unload.
RPackageOrganizer default unregisterPackageNamed: each.
" Possibly unnecessary... "
Smalltalk removeEmptyMessageCategories.
Smalltalk cleanOutUndeclared.
Smalltalk fixObsoleteReferences.
Smalltalk globals flushClassNameCache ].
Behavior flushEvents.
Behavior flushObsoleteSubclasses.
SmalltalkImage current resetTools.'
答案 3 :(得分:6)
当我遇到这个问题时,我只是简单地使用getter setter方法,我的问题就解决了。
我正在使用Spring启动版2.0。
答案 4 :(得分:3)
考虑到@Arpit的答案,对我而言,只有当我添加两个jackson依赖项时才有效:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
并配置了原因,web.xml <mvc:annotation-driven/>
。
帮助我的原始答案就在这里:https://stackoverflow.com/a/33896080/3014866
答案 5 :(得分:3)
是的,只需添加带有公共修饰符的二传手/ getters;)
答案 6 :(得分:0)
在我的情况下,我使用的jackson-databind-2.8.8.jar
与我需要使用的JDK 1.6
不兼容,因此Spring没有加载此转换器。我降级了版本,现在可以使用了。
答案 7 :(得分:0)
我正在使用groovy + springboot并收到此错误。
如果我们使用以下依赖项,则只需添加getter / setter就可以了。
implementation 'org.springframework.boot:spring-boot-starter-web'
随着Jackson核心课程随之而来。