2010-11-16 7 views
6

Ich habe einige Fehler von Date und Long-Typen und Overlay-Typen. Beide verwenden lange, was in GWT JSNI nicht erlaubt ist. Datum serialisiert so lange über getTime().GWT OverlayTypes Datum und Länge

Was ich jetzt tun (und es scheint zu funktionieren) ist:

VON JAVA (Jackson verwenden zu Json serialisiert)

Long myLong = new Long(50) 
Date myDate = new Date(); 

public String getMyLong() 
{ 
return String.valueOf(myLong); 
} 

public String getDate() { 
return String.valueOf(date.getTime()); 
} 

VON GWT (mit OverlayTypes)

/*Returning a Long*/ 
private final native String _getEscaletaId() /*-{ return this.escaletaId; }-*/; 
public final Long getEscaletaId() {return new Long(_getEscaletaId());} 
/*Returning a Date*/ 
private final native String _getDate() /*-{ return this.date; }-*/; 
public final Date getDate() {return new Date(Long.valueOf(_getDate()));} 

Ist das der bessere Ansatz, um mit langen und anderen Sondertypen umzugehen?

Vielen Dank.

Antwort

3

Für Daten gibt es JsDate, eine dünne JSO-Wrapper um das Objekt JS Date.

Longs sind heikel, weil JavaScript nicht das Konzept einer langen hat. Alle Zahlen sind 53-Bit-Double, eine Tatsache, die bit Twitter recently.

+0

Vielen Dank! Ich wusste nichts über JsDate. Was macht GWT mit der Long-Emulation? Kann ich eine große Anzahl mit Long-Emulation so handhaben wie ich? –

+2

GWT emuliert Longs als ein Paar von Zahlen, was bedeutet, dass sie funktionieren, aber sie werden auch ineffizient sein. Verwenden Sie daher nach Möglichkeit Ints oder Doubles. Weitere Informationen finden Sie hier: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsCompatibility.html –

+0

Und zusätzlich: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#wichtig für einige vorgeschlagene Problemumgehungen. –