2

なぜ古い価値を得る可能性がないのValueChangeEventですか?値変更イベントから、古い値と新しい値の両方を提供することが期待されます。

値の変更について通知し、古い値と新しい値の両方を含むことができる組み込みのイベントタイプはありますか?そのようなカスタムイベントをあまり労力をかけずに実装する簡単な方法はありますか?

4

2 に答える 2

2

わかりました、アプリケーションで使用するカスタムタイプを実装することで解決しました:

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;
  }

}

イベント ソース (カスタム コントロールなど) では、次の方法でインターフェイスを実装できます。

implements HasValueChangeHandlers<ValueChange<ValueType>> 

そして、この方法でソースからイベントを発生させることができます:

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

したがって、ハンドラー側で古い値と新しい値の両方にアクセスできます。新しいイベント タイプ、ハンドラ タイプなどを実装する必要はありませんでしたValueChangeEvent。ユース ケースに対して意味的に正しい s を使い続けることができます。

于 2012-07-12T11:41:57.087 に答える