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());
}
どんな助けでも大歓迎です、そして私は学んだどんな教訓も公表しようとします。