@ResponseBodyを設定してコレクションを返そうとするときに問題があります。クラスパスにJAXB jarがあり、ContentNegotiatingViewResolverを設定していません。Mapを返すSpring MVC @ResponseBodyは、 "エラー406が受け入れられません"を生成します。
これは私の単純なオブジェクトである: -
@XmlRootElement(name = "test-object")
@XmlAccessorType(XmlAccessType.FIELD)
public class TestObject implements Serializable {
@XmlAttribute
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
が、私は、単一のオブジェクトを返す簡単なテストを書いた...これは問題なく動作しますが、私は、生成されたXML見ることができるよ: -
を
@RequestMapping(value = "one", method = RequestMethod.GET)
public @ResponseBody TestObject getSingleObject() {
TestObject obj = new TestObject();
obj.setId(1);
return obj;
}
私が本当に望むのは、オブジェクトのリストを返すことです。周りに読んだ後、そうする方法は、マップ内のリストを置いて、マップを返すことであるように思える: -
@RequestMapping(value = "all", method = RequestMethod.GET)
public @ResponseBody Map<String, ? extends Object> getAllObjects() {
TestObject obj1 = new TestObject();
obj1.setId(1);
TestObject obj2 = new TestObject();
obj2.setId(2);
List<TestObject> list = Arrays.asList(obj1, obj2);
return Collections.singletonMap("all-objects", list);
}
私は上記を実行
、私は取得しています「エラー406受け入れられません」。私はここで何が間違っていましたか?違いがあるなら、私はJetty 6.1で走っています。
ありがとうございました。
ここで解決したソリューションはありますか? – Ram