为什么无法从 ValueChangeEvent
获取旧值?人们期望值(value)变更事件能够同时提供旧值(value)和新值(value)。
是否有任何内置事件类型可以让我通知值更改并包含旧值和新值?有没有简单的方法来实现这样的自定义事件而不需要太多的努力?
最佳答案
好的,我通过实现应用程序中使用的自定义类型解决了这个问题:
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;
}
}
现在在我们的事件源(例如自定义控件)中,我们可以通过这种方式实现接口(interface):
implements HasValueChangeHandlers<ValueChange<ValueType>>
并且可以通过这种方式从我们的源触发事件:
private void fireValueChangeEvent(ValueType oldValue, ValueType newValue) {
ValueChangeEvent.fire(this, new ValueChange<ValueType>(oldValue, newValue));
}
因此我们可以在处理程序端访问旧值和新值。不需要实现新的事件类型、处理程序类型等。我们可以继续使用 ValueChangeEvent
,它们在语义上对于我们的用例来说是正确的。
关于events - 从值更改事件中获取旧(以前)的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11450626/