在客户端和服务器之间共享GWT类实现

时间:2012-11-13 16:55:07

标签: json gwt serialization deserialization autobean

假设我在GWT中有一个比POJO更复杂的类实现,但是它的方法仍然相对简单,除了它的getter和setter之外它还有一些实用方法,以便我可以成功调用新的Foo()客户端和服务器代码。

我的问题是:如果我有这样一个对象的实例,我如何在GWT服务器和客户端之间进行通信?也就是说,如何在反序列化对象时保留调用其他方法的能力,同时传输其字段?

我们目前在服务器端使用Jackson,在客户端使用AutoBeans,但这严格限于POJO类,因为AutoBeans来自仅包含getter和setter的接口,并且无法(自动)将数据拉入更有用的对象。

为了完整起见,这里是有问题的对象http://pastebin.com/H2ea0W6A

1 个答案:

答案 0 :(得分:2)

您可以使用@Category实际将逻辑放入AutoBeans中:
https://code.google.com/p/google-web-toolkit/wiki/AutoBean#Categories

然而,它不适用于您的setKWHRgetKWHR(至少不会像属性访问者那样命名)。

将这些方法移出Energy类可能更容易,只留下DTO。
或者,将这样的DTO(至少在客户端,DTO是AutoBean)包装到另一个可以带来逻辑的对象中(并简单地将getMMBTUgetDisplayUnit委托给包装的DTO)。

要么使用Piriti之类的东西在客户端进行反序列化,而不是使用AutoBeans;或将您的AutoBean数据复制到Energy实例。