Ich brauche Hilfe bitte ...SmartGWT nicht in der Lage Daten in der DataSource.transformResponse() -Methode zu analysieren
ich mit GWT arbeite Web-Anwendung aktiviert. Ich benutze das gwt-2.3.0 SDK.
Ich habe eine Methode, die die Datasource-Klasse und verwendet die transformResponse Methode erweitert:
public class DeathRecordXmlDS extends DataSource {
protected void transformResponse(DSResponse response, DSRequest request, Object data){
super.transformResponse(response, request, data);
}
}
Wie ich verstehe, die transformResponse() Methode sollte die Kontrolle bekommen und an diesem Punkt werde ich Zugriff auf die Daten haben Dies wird auf der Client-Seite meiner Anwendung zur Verfügung gestellt. Ich versuche, mit dem übergebenen Objektdatenparameter (der dritte Parameter) zu arbeiten.
Ich erwarte, dass eine XML-formatierte Zeichenfolge übergeben wird. Die XML wird Daten (ein Zählfeld) enthalten, die ich benötige Zugang und Nutzung.
Ich bekomme keine XML-Zeichenfolge. Hier ist, was ich weiß ...
Ich sehe die XML-Daten an meine Webapp (der Client) übergeben. Ich kann dies sehen, weil ich die Webseite, mit der ich arbeite, inspiziere und die Antwortdaten sehe. Hier ist ein Beispiel für etwas, das ich erwarte zu erhalten:
XML data from Query:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Collection numRecords="0">
<DeathRecords/>
</Collection>
Die obige XML gültig ist (Ich habe es in einem Validator). Dies ist ein Fall, in dem keine Daten (keine Todesdaten) an meine Anwendung zurückgegeben wurden. Das XML-Attribut numRecords ist auf "0" festgelegt. Natürlich, wenn ich Datensätze zurückgegeben habe, wird die Anzahl der Datensätze in den numRecords enthalten sein und ich werde die gleiche Anzahl von DeathRecord Knoten bekommen.
Ich bekomme nicht die oben genannten Daten (oder, ich weiß nicht, wie man damit arbeitet) in der transformResponse() - Methode.
Hier ist, was ich getan habe, um zu versuchen, das herauszufinden ...
Der Objektdatenparameter ... es ist ein JavaScriptObject ist. Ich weiß das, weil ich ein .getClass tat() getName() auf sie.
DeathRecordXmlDS::transformResponse() data.getClass().getName(): com.google.gwt.core.client.JavaScriptObject$
Dann zu versuchen, mit ihm zu arbeiten, ich habe es in einen String konvertiert:
com.google.gwt.core.client.JavaScriptObject dataJS = (com.google.gwt.core.client.JavaScriptObject)data;
System.out.println("DeathRecordXmlDS::transformResponse() data as a JavaScriptObject: "+dataJS.toString());
Der Inhalt Blick von ‚data‘ als String formatiert wie:
DeathRecordXmlDS::transformResponse() data as a JavaScriptObject: [XMLDoc <Collection>]
Also, es sieht aus wie ich etwas haben, das mit meinem ‚Collection‘ Knoten zu tun hat, aber nicht ein String von XML-Daten, die ich analysieren und erhalten zu meinem numRecords-Attribut.
Was muss ich tun, um in der transformResponse() - Methode auf XML zugreifen zu können?
Danke!
Ich habe nicht erwähnt, dass der Code, mit dem ich arbeite, verwendet die sehr XMLTools-Funktion, die Sie erwähnen. Ich glaube, es hat funktioniert (ich nehme an), aber jetzt gibt die selectString-Funktion eine leere Zeichenfolge zurück. Ich arbeite einfach nicht. Ich suchte nach einem neuen Weg, um das Problem zu lösen (Lesen des numRecords-Wertes). Möglicherweise über die XML-Struktur iterieren. – SBParks
Ich bin auf das gleiche Problem gestoßen. Vorhandener Code in meinem Projekt bedeutet, dass mit XMLTools eine Zeichenfolge direkt aus dem Parameter rawData ausgewählt wird, der verwendet wird. In meiner Verwendung gibt dies jedoch nur null zurück, obwohl mein XML korrekt formatiert ist. Ich bin interessiert zu wissen, ob etwas anderes angegeben werden muss, um die XML-Rohdaten zu erhalten, anstatt sie in JSOs zu konvertieren. – Tom