2010-11-29 2 views
8

Ich bin auf der Suche nach einer generischen Möglichkeit zur Rückgabe einer Reihe von Objekten in meinem REST-Service. Ich benutze die Spring3 Nachrichtenkonverter und die @ResponseBody Annotation.Generisches Rückgabeobjekt für eine Sammlung von Objekten in RESTful Spring3 App

Einige Seiten sagen, dass JAXB2 „Probleme“ hat einen Standard java.util.List Rückkehr und alle Beispiele gefunden eine eigene Klasse definieren (zB Autoren, Produkte, Kunden) für jede Datendomäne, wie zum Beispiel:

http://www.ibm.com/developerworks/web/library/wa-spring3webserv/index.html (siehe "Sammlung von Ressourcen", zweiter Absatz)

Hat jemand einen Weg gefunden, eine generische Klasse/Ansatz für diese zu schaffen, die mir erspart, alle diese Sammlung Klassen zu erstellen?

Update 5. April 2011: Ich habe hier noch keine Fortschritte gemacht. Die Rückgabe eines generischen Listenobjekts führt immer zu einer JAXBException "class XXX" oder einer Superklasse in diesem Kontext.

Antwort

1

Beim Erstellen von REST-Services in einem JAX-RS-Framework (das JAXB für die XML-Bindung verwendet) können Sie zurückkehren eine Liste. Ein Beispiel finden:

Was passiert, wenn Sie versuchen, dies zu tun mit Spring?

+1

Das Senden der REST-Anforderung mit einem Accept-Header von "application/xml" führt zu einem 406 NOT_ACCEPTABLE-Statuscode. Serialisierung zu JSON über den "application/json" Medientyp funktioniert. Zuvor hatte ich auch einige seltsame 500 Internal Server Fehler ohne Log oder Konsole Ausgabe, aber kann das jetzt nicht reproduzieren .. (natürlich!) :) – Tom

0

Sie können einfach eine ModelMap zurückgeben und alle gewünschten Objekte einschließlich Arrays einfügen.

+0

Wirklich? Obwohl, wie in meiner Frage angegeben, verwende ich die @ResponseBody Annotation? – Tom

0

Fragen ... haben Sie den Content-Type: application/xml in den Anforderungsheadern festgelegt?

+0

Ja, das habe ich getan – Tom

Verwandte Themen