为什么没有可能从ValueChangeEvent
获得旧值?从价值变化事件中可以期待提供新旧价值。
是否有任何内置事件类型允许我通知有关值更改并包含旧值和新值?有没有简单的方法来实现这样的自定义事件而不需要太多努力?
答案 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();
}