Я использую GWT 2.4 с редактором и фабричной структурой запросов.У меня есть модель Trip, у которой есть адрес «origin» и адрес «destination».При создании поездки через пользовательский интерфейс два адреса создаются автоматически и присваиваются поездке.Пользователь заполняет детали и сохраняет.По какой-то причине я получаю сообщение об ошибке «зависание автоматически» при попытке сохранения на сервере.Этот код работал в GWT 2.3, и я не могу переключиться обратно.Я надеюсь, что это не ошибка в GWT 2.4.Вот пример кода того, что я делаю:
RequestContext request = requestFactory.request();
TripProxy trip = request.create(TripProxy.class);
trip.setOrigin(request.create(AddressProxy.class));
trip.setDestination(request.create(AddressProxy.class));
driver.edit(trip, request);
this.trip = trip;
// … on save button clicked (different method)
RequestContext request = driver.flush();
request.save(trip).with(driver.getPaths()).fire(someReceiverImpl);
Результаты:
java.lang.IllegalStateException: The AutoBean has been frozen
at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.checkFrozen(AbstractAutoBean.java:195)
at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.setProperty(AbstractAutoBean.java:270)
at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)
Вызов fire
завершается успешно, но где-то внутри requestfactory, ошибка вышевыброшены.Любопытно, что объект сохраняется на сервере, однако проверки не применяются.Когда я упрощаю модель и удаляю связи адресов, проверка и сохранение работают.Моя главная проблема - это ошибка автобина.материал проверки является вторичным.
РЕДАКТИРОВАТЬ: При дальнейшем расследовании я обнаружил, что сущности добираются до сервера в порядке и сохраняются, как и ожидалось.По возвращении выдается указанное выше исключение.AddressProxy - это ValueProxy, и, похоже, RF не любит, когда Trip возвращается с этими ассоциациями.Возврат нулевого «решает» проблему, но это, очевидно, не будет работать в долгосрочной перспективе.