GWT编辑器驱动程序仍然很脏

时间:2016-12-13 10:49:34

标签: gwt uibinder

我正在使用gwt编辑器驱动程序。在调用flush()方法并对数据进行后处理之后,我将回到相同的视图。我已经注意了驱动程序已初始化并且资源绑定已完成。但是,如果我检查IsDirty()标志,它仍然显示为真。这是怎么回事?

1 个答案:

答案 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实际上清除了任何脏标志,但FlusherErrorCollector没有。