2010-11-16 67 views
6

我从日期和长类型和覆盖类型有一些错误。两者都使用long,这在GWT JSNI中是不允许的。日期只需通过getTime()就可以序列化。GWT覆盖类型日期和长

我在做什么,现在(和它似乎工作)是:

从Java(使用杰克逊序列化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()); 
} 

FROM GWT(使用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()));} 

这是处理长时间和其他特殊类型的更好方法吗?

谢谢。

回答

3

对于日期,存在JsDate,这是围绕JS Date对象的薄JSO包装。

因为JavaScript没有很长的概念,所以多数人都很冒险。所有的数字都是53位双打,其中bit Twitter recently

+0

谢谢!我不知道JsDate。 GWT与长时间模拟做什么?我可以像我一样在长时间模拟中处理一个大数字吗? – 2010-11-17 14:17:40

+2

GWT将长期模拟为一对数字,这意味着它们将起作用,但它们也将是低效的。因此,尽可能使用整数或双精度。详情请参阅:http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsCompatibility.html – 2010-11-17 15:22:52

+0

此外:http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#important for some建议的解决方法。 – 2010-11-17 15:27:00