为什么没有可能从ValueChangeEvent
获取旧值?从价值变化的事件来看,这是相当值得期待的,以提供新旧价值。从价值变化事件中获取旧的(以前的)值
是否有任何内置事件类型可让我通知有关值更改并包含旧值和新值的内容?有没有简单的方法来实现这样的自定义事件没有太多的努力?
为什么没有可能从ValueChangeEvent
获取旧值?从价值变化的事件来看,这是相当值得期待的,以提供新旧价值。从价值变化事件中获取旧的(以前的)值
是否有任何内置事件类型可让我通知有关值更改并包含旧值和新值的内容?有没有简单的方法来实现这样的自定义事件没有太多的努力?
好吧,我解决它通过实现自定义类型的应用程序中使用:
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));
}
因此,我们可以同时访问原值和ne w值处理器端。没有必要实现新的事件类型,hanlder类型等。我们可以继续使用ValueChangeEvent
这对我们的用例而言在语义上是正确的。
另一种解决方案:
int oldValue;
@UiHandler("fooListBox")
void onFooListBoxMouseDownEvent(MouseDownEvent event){
oldValue = bisListBox.getSelectedIndex();
}
@UiHandler("fooListBox")
void onFooListBoxChangeEvent(ChangeEvent event){
int newValue = bisListBox.getSelectedIndex();
}