爲什麼沒有可能從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();
}