2016-12-13 2 views
0

gwt 편집기 드라이버를 사용하고 있습니다. flush() 메서드를 호출하고 데이터를 후 처리하면 동일한 뷰로 다시 이동합니다. 드라이버가 초기화되고 리소스 바인딩이 완료되었습니다. 그러나 플래그를 확인하면 여전히 true로 표시됩니다. 어떻게 된 일인가?GWT 편집기 드라이버가 더럽습니다.

답변

1

플러시가 더티 플래그를 지우지 않으면 새 값을 설정하십시오 (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하지 않습니다.

+0

귀하의 기여에 감사드립니다. 하지만 initialize() 및 edit()를 올바르게 호출했습니다. 그러나, 나는이 문장에서 널 포인터 예외를 받고있다. –

+0

거기에 널 포인터가 있다면 뭔가 다른 것입니다. 질문에 충분한 코드를 게시하여 문제를 설명하십시오 (원래 질문에서 NPE를 언급 한 적이 없으므로). –

관련 문제