2016-12-13 3 views
0

J'utilise les pilotes de l'éditeur gwt. Après l'appel de la méthode flush() et le post-traitement des données, je retourne à la même vue. J'ai pris soin que le pilote est initialisé et que la liaison des ressources a été effectuée. Cependant, si je vérifie le drapeau IsDirty() cela montre toujours être vrai. Comment cela se passe-t-il?Le pilote de l'éditeur GWT reste sale

Répondre

1

Le rinçage n'efface pas les indicateurs sales, en définissant une nouvelle valeur (via edit()). Ceci est logique lorsque vous pensez à des erreurs - les éditeurs ne doivent pas signaler les erreurs d'éditeur à leurs délégués, sauf pendant le flush pour éviter le double signalement des mêmes erreurs, donc après que les erreurs de vidage doivent être collectées. Si tout était propre à ce moment-là, ce ne serait pas possible.

De 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(); 
} 

Le Initializer étend Refresher qui efface effectivement des drapeaux sales, mais Flusher et ErrorCollector ne le font pas.

+0

Merci pour votre contribution. Mais, j'ai appelé initialize() et edit() correctement. Cependant, je reçois une exception de pointeur nul pour ces instructions. –

+0

Si vous obtenez des pointeurs NULL, quelque chose d'autre est faux. Veuillez poster suffisamment de code dans votre question pour décrire le problème (puisque vous n'avez jamais mentionné le NPE dans votre question initiale). –