尝试使用 RequestFactoryEditorDriver.edit() 编辑新(代理)实体时,出现以下错误:“异常捕获:尝试编辑之前由另一个 RequestContext 编辑的 EntityProxy”。我相当确定这是我对请求工厂/编辑器框架架构的误解造成的。这是我认为与此问题有关的编辑器代码:
public class OrgMaintenanceWidget extends Composite implements Editor<IOrgProxy> {
... other fields ...
private IOrgEditorDriver _orgEditorDriver;
interface IOrgEditorDriver extends RequestFactoryEditorDriver<IOrgProxy, OrgMaintenanceWidget> {}
public OrgMaintenanceWidget(final IClientFactory clientFactory) {
... widget initialization ...
_orgEditorDriver = GWT.create(IOrgEditorDriver.class);
_orgEditorDriver.initialize(_clientFactory.getRequestFactory().getEventBus(),
_clientFactory.getRequestFactory(), this);
}
@UiHandler("newButton")
public void onNewButtonClick(final ClickEvent clickEvent) {
_org = _clientFactory.getCache().getOrgCache().newOrg();
_orgEditorDriver.edit(_org, _clientFactory.getRequestFactory().orgRequestContext());
}
...
}
导致异常的是“_orgEditorDriver.edit()”行。“newOrg()”方法是:
public IOrgProxy newOrg() {
return _clientFactory.getRequestFactory().orgRequestContext().create(IOrgProxy.class);
}
RequestFactory 很简单:
public interface IRequestFactory extends RequestFactory {
IOrgRequestContext orgRequestContext();
}
我确信我错过了一些关于编辑新实体的基本知识。当我编辑现有实体时,一切都很好...... UI 组件会自动填充,并且将编辑器刷新回实体效果非常好。下面是为现有实体启动编辑的代码:
@UiHandler("newButton")
public void onNewButtonClick(final ClickEvent clickEvent) {
_org = _clientFactory.getCache().getOrgCache().newOrg();
_orgEditorDriver.edit(_org, _clientFactory.getRequestFactory().orgRequestContext());
}
任何帮助将不胜感激,我将尝试发布任何经验教训。