GWT RequestFactory:得到“没有类型的令牌......”例外

时间:2012-02-18 22:49:47

标签: gwt-rpc requestfactory

我是GWT和RequestFactory的新手,所以我使用GWT RequestFactory为RPC编写一个简单的测试应用程序,并为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();

因此,所有内容都能完美编译并逐步完成代码,客户端的所有内容都是A-OK。在服务器端,我得到UnexpectedExcpetion:没有类型的令牌......

在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);
  }

我假设它正在尝试从请求上下文中确定类型,但它并没有帮助我看到我最终缺少的内容。会导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:1)

您可能错过了所需的with()

尝试req.save(person).with("address").fire();

之类的内容

答案 1 :(得分:1)

来自Thomas Broyer的Google Web Toolkit Google小组的这篇文章解决了这个问题。这是一个引用:

  

Eclipse中的注释处理几乎无法使用。我昨天奋战了几个小时,让它刷新生成的DeobfuscatorBuilder。 IIRC,我在eclipse中刷新项目,然后重新启动它,然后禁用注释处理,删除.apt_generated文件夹并重新启用注释处理。如果您可以将Maven用于您的项目,那么我敢打赌它在那里工作得更好! (我在gwt-user项目本身就遇到了问题,所以对我来说不是一个选项)下次,我会尝试设置一个构建动作(或其他)来运行“javac -proc:only”而不是依赖Eclipse的内置(并且非常多的)APT。