0
gwt 편집기 드라이버를 사용하고 있습니다. flush()
메서드를 호출하고 데이터를 후 처리하면 동일한 뷰로 다시 이동합니다. 드라이버가 초기화되고 리소스 바인딩이 완료되었습니다. 그러나 플래그를 확인하면 여전히 true로 표시됩니다. 어떻게 된 일인가?GWT 편집기 드라이버가 더럽습니다.
gwt 편집기 드라이버를 사용하고 있습니다. flush()
메서드를 호출하고 데이터를 후 처리하면 동일한 뷰로 다시 이동합니다. 드라이버가 초기화되고 리소스 바인딩이 완료되었습니다. 그러나 플래그를 확인하면 여전히 true로 표시됩니다. 어떻게 된 일인가?GWT 편집기 드라이버가 더럽습니다.
플러시가 더티 플래그를 지우지 않으면 새 값을 설정하십시오 (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
하지 않습니다.
귀하의 기여에 감사드립니다. 하지만 initialize() 및 edit()를 올바르게 호출했습니다. 그러나, 나는이 문장에서 널 포인터 예외를 받고있다. –
거기에 널 포인터가 있다면 뭔가 다른 것입니다. 질문에 충분한 코드를 게시하여 문제를 설명하십시오 (원래 질문에서 NPE를 언급 한 적이 없으므로). –