Wie generiere ich XML Response aus Klassen mit generischen Vorlagen (T) in RESTEasy?

9

Ich habe eine generische ServiceResponse-Klasse wie folgt:

%Vor%

Von meinem RESTEasy-Dienst möchte ich eine XML-Antwort wie folgt generieren:

%Vor%

Aber das wirft Fehler, da es keinen JaxbMarshallWriter für java.util.List gibt.

Ich kann die Liste GenericEntity-Klasse auflisten.

%Vor%

Aber GenericEntity<ServiceResponse<List<Customer>>> funktioniert nicht und sagt kein JaxbMarshallWriter für java.util.List.

Gibt es irgendwelche Arbeiten um Marshall / Unmarshall-Klassen mit generischen Vorlagen (,)?

    
K. Siva Prasad Reddy 25.05.2012, 11:47
quelle

4 Antworten

1

Ich bin mir nicht sicher, ob es einen Unterschied macht, dass Ihre Klasse generische Vorlagen verwendet, aber so würde ich eine XML-Antwort mit Hilfe von RESTEasy erzeugen

Dies ist die Klasse, die Ihre Serviceantwort enthält

%Vor%

Dies ist die Klasse, die Ihre Antwort in XML umwandeln würde. Diese Klasse macht wirklich nicht viel anderes, als XML und JSON aufzunehmen oder zu produzieren oder was auch immer Sie verwenden. Dann übergibt es die Anfrage an die Klasse, die die eigentliche Arbeit leistet. Dies ist jedoch die Klasse, die Ihre spezifische Frage beantworten würde (glaube ich).

%Vor%

Dies ist die Klasse, die all die wirkliche Arbeit leistet.

%Vor%

Ich habe auch nichts davon getestet. Hoffentlich ist es genug für Sie, um das Muster zu bekommen.

    
j.jerrod.taylor 08.03.2013 17:34
quelle
0

Das Problem ist nicht das generische Problem ist, dass Sie Ihre Liste in ein Objekt umbrechen sollten.

%Vor%

Sie können dann die ResponseData-Klasse mit Anmerkungen versehen, um eine Gruppe von Objekten darzustellen.

    
minus 02.12.2012 11:03
quelle
0

Eine Lösung, die ich für das gleiche Problem gemacht habe, war die Erstellung eines neuen Typs, um den generischen Typ zu simulieren. Wie ich es getan habe, habe ich einen neuen Typ namens Container (zum Beispiel: PersonContainer) erstellt Es gibt eine Liste meiner Entität (Person), die ich anstelle des Listentyps verwende, und es funktioniert sehr gut ...

Hier haben Sie mein Beispiel, wenn es für Sie nützlich sein kann:

%Vor%

Und das ist der Container AdminContainer:

%Vor%     
Lotfiction 12.02.2013 15:28
quelle
0

Ich weiß viel zu spät, um zu antworten, aber da es keine Antwort gibt, werde ich versuchen, meine Antwort zu geben, hoffe, dass es hilft.

Das Problem ist, wenn Sie eine generische Klasse haben, sagen MyClass jaxB excepts T ist entweder mit @XMLRootElement oder @XMLType annotiert.

In Ihrem Codeszenario hat Ihr Typ T von List List kein @XMLRootElement oder @XMLType, daher wird ein Fehler ausgegeben. Ich denke, die Lösung für den obigen Fall ist das Erstellen einer Wrapper-Klasse für Collection wie

%Vor%

jetzt in Ihrem Code haben so etwas.

%Vor%     
rahul maindargi 20.04.2013 13:19
quelle