0

私は問題を理解しています。リストは、Spring が何をインスタンス化するかわからないインターフェースです。1 つの解決策は、コントローラー (およびサービス) が ArrayList を返せるようにすることです。これは本当に避けたいです。代わりにこれを行うにはどうすればよいですか?

SEVERE: Servlet.service() for servlet [Spring MVC Dispatcher Servlet] in context with path threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.List]: Specified class is an interface] with root cause
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.List]: Specified class is an interface


public @ResponseBody
    List<Preference> getPreferences(@PathVariable Long userId, List<Preference> preferences, ModelMap data) {
4

1 に答える 1

1

問題を解決しようとする前に、どのような解決策を期待しているか考えてみてください。List一部のオブジェクトを JSONにマーシャリングしたいと考えています。この JSON はどのように見えるでしょうか? 最初にテストを書くとしたら、アサーションに何を入れますか?

ヒント: これは有効な JSONではありません:

[1、2、3、4、5]

これもそうではありません:

[{a: 1}, {b: 2}]

簡単に言うと、JSON と XML の両方でマーシャリングするには、オブジェクト ラッピング リストが必要です。

{array: [1, 2, 3, 4, 5]}

そうは言っても、リストを単純なオブジェクトでラップするだけです。

class Wrapper {

    private List<Preference> preferences;

}

public @ResponseBody Wrapper getPreferences(/*...*/)

Wrapperクラス名は破棄されますが、preferencesフィールド名が使用されることに注意してください。

于 2012-09-28T16:52:08.943 に答える