2010-11-16 4 views
6

Mam pewne błędy z typów Date i Long oraz Overlay Types. Oba zastosowania są długie, co nie jest dozwolone w GWT JSNI. Date serializuje się tak długo za pomocą metody getTime().GWT OverlayTypes Data i Long

Co robię teraz (i wydaje się działać) to:

z Java (przy użyciu Jacksona do serializacji do JSON)

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

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

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

OD GWT (używając 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()));} 

Czy to jest lepsze podejście do obsługi długich i innych typów specjalnych?

Dziękuję.

Odpowiedz

3

Dla dat, jest JsDate, cienki wrapper JSO wokół obiektu JS Date.

Tęsknoty są ryzykowne, ponieważ JavaScript nie ma pojęcia długiego. Wszystkie liczby to 53-bitowe duble, a mianowicie: bit Twitter recently.

+0

Dziękuję! Nie wiedziałem o JsDate. Co robi GWT z długą emulacją? Czy mogę obsłużyć dużą liczbę z długą emulacją tak jak ja? –

+2

GWT emuluje longs jako parę liczb, co oznacza, że ​​będą działać, ale będą również niewydajne. W rezultacie, jeśli to możliwe, używaj int lub debla. Więcej informacji: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsCompatibility.html –

+0

Dodatkowo: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#Important dla niektórych sugerowane rozwiązania. –