工作比方說,我們有一個域實體定義是這樣的:GWT RequestFactory,編輯 - 用樹狀結構
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
s。
那麼,問題#1
比方說,我們希望有整個樹導航。這個想法是,每次我們只看到一個節點,我們可以導航到它的父節點或其子節點。我們希望此導航器使用編輯器框架,因此我們構建編輯器如MyNodeEditor
和ChildrenListEditor
。
據我所知,編輯只能直接適用於豆式實體。所以,只要與MyNode
text
屬性無關,使用children
屬性(ChildrenListEditor
)需要實例請求。
我的解決方案是,使MyNodeEditor
爲ValueAwareEditor
,當它獲取其值設置時,它會啓動InstanceRequest
以獲取子節點的列表。該列表然後綁定到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);
}
});
...
}
原因「產生的原因:java.lang.IllegalArgumentException異常:試圖編輯以前使用其他的RequestContext編輯的EntityProxy」因爲我有同一實體的兩個不同的請求這裏。我沒有訪問RequestContext
我在MyNodeEditor
構建,所以我正在構建新的,它失敗。什麼是正確的方法?