Я новичок в GWT и RequestFactory, поэтому я пишу простое тестовое приложение, используя GWT RequestFactory для RPC и Objectify для ORM.
У меня есть простая сущность Person, и я смог нормально выполнить все грубые операции. Я хотел попробовать добавить тип значения для хранения адресов в виде свойства @Embedded в моем классе Person, как это показано на сайте Google для разработчиков. Поэтому я добавил простой адрес 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: нет типа для токена ...
В частности, кажется, что этот метод попал в ловушку здесь под 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);
}
Я предполагаю, что он пытается определить тип из контекста запроса, но это не помогает мне увидеть, чего не хватает на моем конце. Что вызвало бы это?