我正在使用编辑器和请求工厂框架的GWT 2.4。我有一个模型Trip,它有一个地址'起源'和一个地址'目的地'。当通过UI创建旅程时,这两个地址会自动创建并分配给旅程。用户填写详细信息并保存。出于某种原因,我在尝试持久保存到服务器时遇到'autobean frozen error'。此代码在GWT 2.3中工作,我不能切换回来。我希望它不是GWT 2.4中的一个bug。下面是我在做什么一些示例代码:GWT Autobean冻结时保存图
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内成功,但是完成的地方,上面的错误被抛出。奇怪的是,实体保存在服务器上,但是验证没有执行。当我简化模型并删除地址关联时,验证和保存工作。我的主要问题是autobean冻结错误;验证的东西是次要的。
编辑:在进一步的调查中,我发现这些实体正在将它交给服务器,并按预期持续。它在返回时抛出上述异常。 AddressProxy是一个ValueProxy,它看起来像RF不像Trip一样回来这些关联。返回null'修复'的问题,但这显然不会长期工作。
这是我一直在寻找的答案谢谢。 –