2012-07-12 1 views
2

Pourquoi n'y a-t-il pas une possibilité d'obtenir une ancienne valeur à partir de ValueChangeEvent? Il est plutôt attendu de l'événement de changement de valeur pour fournir à la fois ancienne et nouvelle valeur.Récupération de la valeur ancienne (précédente) des événements de changement de valeur

Y a-t-il un type d'événement intégré qui me permettrait de notifier les changements de valeur et de contenir à la fois l'ancienne et la nouvelle valeur? Y a-t-il un moyen facile de mettre en œuvre un événement personnalisé comme ça sans trop d'effort?

Répondre

2

Ok, je l'ai résolu en mettant en œuvre le type personnalisé à utiliser dans l'application:

public class ValueChange<T> { 

    private final T oldValue; 
    private final T newValue; 

    public ValueChange(T oldValue, T newValue) { 
    this.oldValue = oldValue; 
    this.newValue = newValue; 
    } 

    public T getOldValue() { 
    return oldValue; 
    } 

    public T getNewValue() { 
    return newValue; 
    } 

} 

maintenant dans notre source d'événement (par exemple, contrôle personnalisé), nous pouvons mettre en œuvre l'interface de cette façon:

implements HasValueChangeHandlers<ValueChange<ValueType>> 

et peut tirer des événements de notre source de cette façon:

private void fireValueChangeEvent(ValueType oldValue, ValueType newValue) { 
    ValueChangeEvent.fire(this, new ValueChange<ValueType>(oldValue, newValue)); 
} 

on peut donc accéder à la fois ancienne valeur et ne w valeur sur le côté gestionnaire. Il n'était pas nécessaire d'implémenter un nouveau type d'événement, type hanlder etc. Nous pouvons continuer à utiliser ValueChangeEvent s qui sont sémantiquement correct pour notre cas d'utilisation.

0

Une autre solution:

int oldValue; 

@UiHandler("fooListBox") 
void onFooListBoxMouseDownEvent(MouseDownEvent event){ 
    oldValue = bisListBox.getSelectedIndex(); 
} 

@UiHandler("fooListBox") 
void onFooListBoxChangeEvent(ChangeEvent event){ 
    int newValue = bisListBox.getSelectedIndex(); 

} 
Questions connexes