【发布时间】:2012-02-18 22:49:47
【问题描述】:
我是 GWT 和 RequestFactory 的新手,所以我正在编写一个简单的测试应用程序,使用用于 RPC 的 GWT RequestFactory 和用于 ORM 的 Objectify。
我有一个简单的 Person 实体,并且能够让所有 crud 操作正常工作。我想尝试在我的 Person 类中添加一个用于将地址存储为 @Embedded 属性的值类型,就像它在 Google Developer 网站上显示的那样。所以我添加了一个简单的POJO地址,AddressProxy扩展ValueProxy等。
我最终在我的 RequestFactory 调用中添加了几行代码,如下所示:
PersonRequest req = rf.personRequest();
AddressProxy address = req.create(AddressProxy.class); // Added this
address.setCity(city); // this
PersonProxy person = req.create(PersonProxy.class);
person.setName("Joe");
person.setPhone("215-555-1212");
person.setAddress(address); // and this.
req.save(person).fire();
所以一切都可以完美编译,并且单步执行代码在客户端一切正常。在服务器端,我得到 UnexpectedExcpetion: No type for token...
特别是在 com.google.web.bindery.requestfactory.server.ResolverServiceLayer 下似乎被这种方法所吸引:
@Override
public Class<? extends BaseProxy> resolveClass(String typeToken) {
String deobfuscated = deobfuscator.getTypeFromToken(typeToken);
if (deobfuscated == null) {
die(null, "No type for token %s", typeToken);
}
我假设它试图从请求上下文中确定类型,但它并没有帮助我看到我最后缺少什么。这是什么原因造成的?
【问题讨论】: