春バージョン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;
}
Pom.xml
のJackson JSONマッパーの依存関係:
<!-- 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)
リンク 私がフォローしている例に。
以下の依存関係をpom.xmlに追加します。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.0</version>
</dependency>
私は同じ問題に直面していました。 @ResponseBody
を使用していたため、@RestController
を入れませんでした。ただし、Companyクラスにgetter/setter
メソッドを指定しなかったため、エラーが発生していました。 getter/setter
を追加した後、私の問題は解決しました。
また、返されたBeanが空でないことを確認する必要があります(ジャクソンがシリアル化できる)。私の特定のケースでは、ゲッターとセッターなしで、ジャクソン注釈なしで、フィールドがnullに等しいオブジェクトのインスタンスを返そうとしました。私は次のメッセージを受け取りました:
com.fasterxml.jackson.databind.JsonMappingException:
No serializer found for class com.foo.bar.Baz and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) )
この問題に直面したとき、単にゲッターセッターメソッドを配置するだけで、問題は解決しました。
Springブートバージョン2.0を使用しています。
@Arpitの答えを考えると、私にとっては2つのジャクソンの依存関係を追加したときにのみ機能しました:
<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
Groovy + springbootを使用していて、このエラーが発生しました。
以下の依存関係を使用している場合、ゲッター/セッターを追加するだけで十分です。
implementation 'org.springframework.boot:spring-boot-starter-web'
ジャクソンのコアクラスに付属しています。
私の場合、jackson-databind-2.8.8.jar
と互換性のないJDK 1.6
を使用していました。使用する必要があるため、Springはこのコンバーターをロードしていませんでした。バージョンをダウングレードしましたが、現在は機能しています。