Wie gehen Sie richtig zu binden, eine Liste von Objekten in einer Grails-Kommando?
Ich versuche, herauszufinden, wie zu Deserialisieren und zu validieren verschachtelte Objekte im JSON-Anforderung in eine Grails 2.1.1 command-Objekt.
Derzeit habe ich ein command-Objekt in mein controller, der hat ein paar grundlegende Eigenschaften und dann die Liste der domain-Objekte,
protected static class CustomCommand {
String name
String description
List<DomainObject> objs
}
Und einer JSON-Körper, um meine POST-Anfrage,
{
name: 'test name',
description: 'test description',
objs: [
{
name: 'test sub object',
description: 'test description'
}
]
}
Sehe ich das command-Objekt erstellt, mit einem leeren array. Eine Idee, wie ich die sub meine Objekte in JSON Körper zu Deserialisieren in das command-Objekt und dann überprüfen kann?
Früher habe ich gearbeitet, um dieses durch das manuelle erstellen eines Objekts vom parameter-Karte und die überprüfung, dass direkt, aber das fühlt sich an wie ein workaround, das ist nicht alles nutzen, was Grails bietet.
- Haben Sie stolperte über diese Diskussion in letzter Zeit?
- danke, dass ist hilfreich, die TLDR ist, dass es klingt wie es nicht funktioniert out of the box. Wollen Sie die Zeit nehmen, fassen, dass der thread in eine Antwort, so kann ich Ihnen ein upvote?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatten wir ein ähnliches Problem mit binding post Daten in eine Liste im Befehl. Unsere Problemumgehung, mit der gearbeitet wurde, definieren Sie einen Standardwert für collection-Elemente:
Nach, dass die post-Daten korrekt an die Liste. Ich denke der Grund dafür ist, dass Groovy ignoriert die generischen Typ-parameter von der Liste und nicht wissen, welche Objekt zu instanziieren zur Laufzeit.
Ich bin nicht sicher, ob das funktioniert in Ihrem Fall, aber es könnte einen Versuch Wert sein
Update:
Habe ich diese vor ein paar Minuten:
controller-Methode:
Habe ich geschrieben einige json mit jquery:
Die Ausgabe gedruckt von der regler:
Also es scheint zu funktionieren 😮
new CustomCommand(request.JSON)
? (Ich aktualisierte meine Antwort)Nie hab ich dies unter Grails 2.1.1, aber anscheinend wurde dieses Problem behoben, in Grails 2.3,