gpt4 book ai didi

GWT 编辑器框架

转载 作者:行者123 更新时间:2023-12-04 17:38:37 25 4
gpt4 key购买 nike

有没有办法获取编辑器正在编辑的代理?

正常的工作流程是:

 public class Class implments Editor<Proxy>{
@Path("")
@UiField AntoherClass subeditor;


void someMethod(){
Proxy proxy = request.create(Proxy.class);
driver.save(proxy);
driver.edit(proxy,request);
}
}

现在,如果我有同一个代理的子编辑器
public class AntoherClass implements Editor<Proxy>{
someMethod(){
// method to get the editing proxy ?
}
}

是的,我知道我可以在创建后使用 setProxy() 将代理设置为子编辑器,但我想知道是否有类似 HasRequestContext 的东西,但用于编辑的代理。

当您在非 UI 对象中使用例如 ListEditor 时,这很有用。

谢谢你。

最佳答案

您可以通过两种方式获得对给定编辑器正在处理的对象的引用。首先,一些简单的数据和一个简单的编辑器:

public class MyModel {
//sub properties...

}

public class MyModelEditor implements Editor<MyModel> {
// subproperty editors...

}

第一:而不是实现 Editor ,我们可以选择另一个扩展编辑器的接口(interface),但允许子编辑器( LeafValueEditor 不允许子编辑器)。让我们试试 ValueAwareEditor :
public class MyModelEditor2 implements ValueAwareEditor<MyModel> {
// subproperty editors...

// ValueAwareEditor methods:
public void setValue(MyModel value) {
// This will be called automatically with the current value when
// driver.edit is called.
}
public void flush() {
// If you were going to make any changes, do them here, this is called
// when the driver flushes.
}
public void onPropertyChange(String... paths) {
// Probably not needed in your case, but allows for some notification
// when subproperties are changed - mostly used by RequestFactory so far.
}
public void setDelegate(EditorDelegate<MyModel> delegate) {
// grants access to the delegate, so the property change events can
// be requested, among other things. Probably not needed either.
}
}

这要求您实现上述示例中的各种方法,但您感兴趣的主要方法是 setValue。 .您不需要自己调用这些,它们将由驱动程序及其代表调用。 flush如果您打算对对象进行更改,则该方法也很适合使用 - 在刷新之前进行这些更改将意味着您正在修改预期驱动程序生命周期之外的对象 - 不是世界末日,但以后可能会让您感到惊讶。

第二:使用 SimpleEditor副主编:
public class MyModelEditor2 implements ValueAwareEditor<MyModel> {
// subproperty editors...

// one extra sub-property:
@Path("")//bound to the MyModel itself
SimpleEditor self = SimpleEditor.of();

//...
}

使用这个,您可以调用 self.getValue()读出当前值是多少。

编辑:查看 AnotherEditor你已经实现了,看起来你正在开始制作类似 GWT 类 SimpleEditor 的东西,尽管您可能还需要其他子编辑器:

Now if i got a subeditor of the same proxy

public class AntoherClass implements Editor<Proxy>{
someMethod(){
// method to get the editing proxy ?
}
}


这个子编辑器可以实现 ValueAwareEditor<Proxy>而不是 Editor<Proxy> ,并保证其 setValue编辑开始时将使用 Proxy 实例调用方法。

关于GWT 编辑器框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10145124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com