2010-11-16 7 views
6

Ho alcuni errori dai tipi Data e Long e Overlay. Entrambi gli usi lunghi che non sono consentiti in GWT JSNI. La data viene serializzata più a lungo via getTime().GWT OverlayTypes Date and Long

Quello che sto facendo in questo momento (e sembra funzionare) è:

da Java (Utilizzo di Jackson per serializzare a 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()); 
} 

DA GWT (Uso 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()));} 

È questo l'approccio migliore per gestire tipi lunghi e altri tipi speciali?

Grazie.

risposta

3

Per le date, c'è JsDate, un sottile involucro JSO attorno all'oggetto JS Date.

I tempi sono lunghi perché JavaScript non ha il concetto di long. Tutti i numeri sono doppi di 53 bit, un fatto che è bit Twitter recently.

+0

Grazie! Non sapevo di JsDate. Cosa sta facendo GWT con l'emulazione lunga? Posso gestire un numero elevato con l'emulazione lunga come sto facendo? –

+2

GWT emula long come una coppia di numeri, il che significa che funzioneranno, ma saranno anche inefficienti. Di conseguenza, usa intes o doubles quando possibile. Maggiori informazioni qui: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsCompatibility.html –

+0

E in aggiunta: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#important per alcuni soluzioni alternative suggerite. –