假设我在GWT中有一个比POJO更复杂的类实现,但是它的方法仍然相对简单,除了它的getter和setter之外它还有一些实用方法,以便我可以成功调用新的Foo()客户端和服务器代码。
我的问题是:如果我有这样一个对象的实例,我如何在GWT服务器和客户端之间进行通信?也就是说,如何在反序列化对象时保留调用其他方法的能力,同时传输其字段?
我们目前在服务器端使用Jackson,在客户端使用AutoBeans,但这严格限于POJO类,因为AutoBeans来自仅包含getter和setter的接口,并且无法(自动)将数据拉入更有用的对象。
为了完整起见,这里是有问题的对象http://pastebin.com/H2ea0W6A
答案 0 :(得分:2)
您可以使用@Category
实际将逻辑放入AutoBeans中:
https://code.google.com/p/google-web-toolkit/wiki/AutoBean#Categories
然而,它不适用于您的setKWHR
和getKWHR
(至少不会像属性访问者那样命名)。
将这些方法移出Energy
类可能更容易,只留下DTO。
或者,将这样的DTO(至少在客户端,DTO是AutoBean)包装到另一个可以带来逻辑的对象中(并简单地将getMMBTU
和getDisplayUnit
委托给包装的DTO)。
要么使用Piriti之类的东西在客户端进行反序列化,而不是使用AutoBeans;或将您的AutoBean数据复制到Energy
实例。