1

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

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

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

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

4

1 回答 1

2

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

但是,它不适用于您的setKWHRand getKWHR(至少如果命名为属性访问器)。

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

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

于 2012-11-13T17:25:16.767 回答