从价值变化事件中获取旧(先前)值

时间:2012-07-12 11:14:25

标签: events gwt gwt2

为什么没有可能从ValueChangeEvent获得旧值?从价值变化事件中可以期待提供新旧价值。

是否有任何内置事件类型允许我通知有关值更改并包含旧值和新值?有没有简单的方法来实现这样的自定义事件而不需要太多努力?

2 个答案:

答案 0 :(得分: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));
}

因此我们可以在处理程序端访问旧值和新值。没有必要实现新的事件类型,hanlder类型等。我们可以继续使用ValueChangeEvent s,它们对于我们的用例在语义上是正确的。

答案 1 :(得分:0)

另一种解决方案:

int oldValue;

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

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

}