我正在使用gwt编辑器驱动程序。在调用flush()
方法并对数据进行后处理之后,我将回到相同的视图。我已经注意了驱动程序已初始化并且资源绑定已完成。但是,如果我检查IsDirty()
标志,它仍然显示为真。这是怎么回事?
答案 0 :(得分:1)
Flushing不清除脏标志,设置新值(通过edit())。
当您考虑错误时这是有道理的 - 编辑器错误不应由编辑器报告给其代理,除非在刷新期间避免双重报告相同的错误,因此必须收集刷新错误。如果当时一切都很干净,那就不可能了。
来自BaseEditorDriver
:
protected void doEdit(T object) {
checkEditor();
object = delegate.ensureMutable(object);
this.object = object;
delegate.setObject(object);
accept(createInitializerVisitor());
DirtCollector c = new DirtCollector();
accept(c);
leafValueMap = c.getLeafValues();
}
protected void doFlush() {
checkObject();
errors = new ArrayList<EditorError>();
accept(new Flusher());
accept(new ErrorCollector(errors));
}
//...
protected EditorVisitor createInitializerVisitor() {
return new Initializer();
}
Initializer
扩展Refresher
实际上清除了任何脏标志,但Flusher
和ErrorCollector
没有。