GWT 2.1.1有非常好的框架 - RequestFactory包含所有EntityProxy和东西。
我正在寻找一种方法来序列化实现EntityProxy的运行时实例以进行调试和记录等。只要它是人类可读的,我就不关心格式了。 更具体地说,我希望有类似Apache Commons Lang提供的东西 ReflectionToStringBuilder 可能有一些方法可以使用GWT里面的JSON序列化机制吗?如果是,如何让它更具可读性?
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
String stringRep = ReflectionToStringBuilder.toString(this);
答案 0 :(得分:4)
至少有两种解决方案:
首先:基于Thomas Broyer
的想法public static String toString(EntityProxy entityProxy)
{
DefaultProxyStore store = new DefaultProxyStore();
Swap.requestFactory.getSerializer(store).serialize(entityProxy);
return store.encode();
}
产生这样的东西:
{"V":"211","P":{"1@2@biz.daich.swap.shared.dto.UserAccountProxy":{"O":"PERSIST","R":"2","Y":1,"T":"biz.daich.swap.shared.dto.UserAccountProxy","P":{"id":null,"items":null,"channelId":null,"lastActive":1296194777916,"name":null,"emailAddress":"test@example.com","lastReported":1296194777916,"lastLoginOn":1296194777916}}}}
第二:基于AutoBean framework
public static String toJson(EntityProxy entityProxy)
{
return AutoBeanCodex.encode(AutoBeanUtils.getAutoBean(entityProxy)).getPayload();
}
哪个产生类似
的字符串{"emailAddress":"test@example.com","lastActive":1296194777916,"lastLoginOn":1296194777916,"lastReported":1296194777916}
第二个就是我需要的东西 - 它在日志中更具可读性。
答案 1 :(得分:2)
我没有尝试过,但看看RequestFactory#getSerializer,ProxySerializer的javadoc中有一些示例代码。
答案 2 :(得分:0)
如果使用该方法 toJson(EntityProxy entityProxy)
将此更改为
toJson(BaseProxy proxy)
然后您可以记录Value和Entity Proxy对象。