工作比方说,我们有一个域实体定义是这样的: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
构建,所以我正在构建新的,它失败。什么是正确的方法?