GWT RequestFactory: получение исключения «Нет типа для токена ...» - PullRequest
2 голосов
/ 19 февраля 2012

Я новичок в 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);
  }

Я предполагаю, что он пытается определить тип из контекста запроса, но это не помогает мне увидеть, чего не хватает на моем конце. Что вызвало бы это?

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Это сообщение Томаса Бройера о Google Web Toolkit Google Group решило проблему.Вот цитата:

Обработка аннотаций в Eclipse едва применима.Вчера я несколько часов сражался, чтобы он обновил сгенерированный DeobfuscatorBuilder.IIRC, я обновляю проект в eclipse, затем перезапускаю его, затем отключаю обработку аннотаций, удаляю папку .apt_generated и снова включаю обработку аннотаций.Если вы можете использовать Maven для своего проекта, то держу пари, что там он работает намного лучше!(У меня возникла проблема с самим проектом gwt-user, поэтому для меня это было невозможно) В следующий раз я попробую настроить действие сборки (или что-то еще) для запуска «javac -proc: only» вместополагаясь на встроенный (и ужасно глючный) APT Eclipse.

1 голос
/ 19 февраля 2012

Возможно, вам не хватает необходимого with().

Попробуйте что-то вроде req.save(person).with("address").fire();

...