このように定義されたドメイン エンティティがあるとします。
interface MyNode {
MyNode getParent();
void setParent(MyNode node);
List<MyNode> GetChildren();
void AddChild(MyNode node);
void RemoveChild(MyNode node);
String getText();
void setText(String text);
}
これらのエンティティを操作する GWT Web アプリを実装しようとしています。リクエスト ファクトリとエディタ フレームワークを使用しています。そして、私は確かにいくつかの問題を抱えています:-)
リクエスト ファクトリの定義は簡単なので、ここには掲載しません。子供に関連するものはすべて のセットであるとだけ言っておきInstanceRequest
ます。
だから、問題#1
ツリー全体のナビゲーターが必要だとしましょう。アイデアは、ノードが 1 つしか表示されないたびに、その親またはその子のいずれかに移動できるということです。このナビゲーターでエディター フレームワークを使用したいので、MyNodeEditor
やのようなエディターを作成しChildrenListEditor
ます。
私の知る限り、エディターは Bean スタイルのエンティティにのみ直接適用できます。MyNode
text
そのため、プロパティの操作に問題がない限り、children
プロパティ ( ChildrenListEditor
) の操作にはインスタンス リクエストが必要です。
私の解決策は、MyNodeEditor
a になるようにしValueAwareEditor
、その値セットInstanceRequest
を取得すると、子ノードのリストを取得するために an を開始します。そのリストは にバインドされChildrenListEditor
ます。
もっと簡単な解決策はありますか?かなり基本的なシナリオだと思います。
問題#2
ここMyNodeEditor
で、編集できるようにすることにしました。Bean スタイルのプロパティはこれでも問題ありませんが、子についてはどうでしょうか。問題#1で言及されたコードを使用:
@Override public void setValue(MyNodeProxy value) {
...
requestFactory.myNodeRequest().getChildNodes().using(value).fire(new Receiver<List<MyNodeProxy>>() {
@Override public void onSuccess(List<MyNodeProxy> response) {
childrenDriver.display(response);
}
});
...
}
ここで同じエンティティに対して2つの異なるリクエストがあるため、「原因: java.lang.IllegalArgumentException: 別のRequestContextによって以前に編集されたEntityProxyを編集しようとしています」が発生します。RequestContext
I 've built at にアクセスできないMyNodeEditor
ため、新しいものを作成していますが、失敗します。正しいアプローチは何ですか?