Spring MVC @ResponseBody de retourner une Carte produit “Erreur 406 not ACCEPTABLE”

Je vais avoir un problème, essayer de mettre en place @ResponseBody de renvoyer une collection. J'ai JAXB pots dans le classpath et je n'ai pas configuré de ContentNegotiatingViewResolver.

C'est mon simple objet:-

@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;
    }
}

J'ai écrit un test simple qui retourne un objet unique... cela fonctionne sans problème, et je suis en mesure de voir le XML généré:-

@RequestMapping(value = "one", method = RequestMethod.GET)
public @ResponseBody TestObject getSingleObject() {
    TestObject obj = new TestObject();
    obj.setId(1);

    return obj;
}

Ce que je veux vraiment, c'est de renvoyer une liste d'objets. Après lecture, il semble que la façon de le faire est de placer la liste sur une carte et de retourner la carte:-

@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);
}

Quand j'execute le ci-dessus, j'obtiens "Erreur 406 not Acceptable".

Qu'ai-je fait de mal? Je suis en cours d'exécution sur la Jetée 6.1 si cela fait une différence.

Grâce.

les solutions de travail?

OriginalL'auteur limc | 2011-09-07