2010-11-16 38 views
6

Tôi có một số lỗi từ các loại Ngày và Dài và Loại Lớp phủ. Cả hai đều sử dụng thời gian dài không được phép trong GWT JSNI. Ngày serializes dài qua getTime().Lớp phủ Lớp phủ GWT Ngày và Dài

Những gì tôi đang làm ngay bây giờ (và có vẻ như để làm việc) là:

TỪ JAVA (Sử dụng Jackson để serialize để 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()); 
} 

TỪ GWT (Sử dụng 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()));} 

Đây có phải là cách tiếp cận tốt hơn để đối phó với các loại đặc biệt dài và khác không?

Thankyou.

Trả lời

3

Đối với các ngày, có JsDate, một gói JSO mỏng xung quanh đối tượng JS Date.

Thời gian cực kỳ khó chịu vì JavaScript không có khái niệm dài. Tất cả các số đều là số tăng gấp đôi 53 bit, một thực tế là bit Twitter recently.

+0

Thankyou! Tôi không biết về JsDate. GWT đang làm gì với mô phỏng dài? Tôi có thể xử lý một số lớn với mô phỏng Long theo cách tôi đang làm không? –

+2

GWT mô phỏng longs như một cặp số, có nghĩa là chúng sẽ hoạt động, nhưng chúng cũng sẽ không hiệu quả. Kết quả là, sử dụng ints hoặc tăng gấp đôi bất cứ khi nào có thể. Thông tin thêm tại đây: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsCompatibility.html –

+0

Và bổ sung: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#important cho một số cách giải quyết được đề xuất. –