如何对字段进行分组以获得一个更改值处理程序
How to group fields to get one change value handler
我有一个这样的演示者:
public class ItemPresenter {
public interface Display {
TextBox getFilterItemName();
TextBox getFilterItemAmount();
}
public ItemPresenter() {
addChangeValueHandlers();
private void addChangeValueHandlers() {
this.display.getFilterItemName().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
display.reload(getItemList(display.getFilterBaseVersionName()
.getText()));
}
});
this.display.getFilterItemAmount().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
display.reload(getItemList(display.getFilterItemAmount()
.getText()));
}
});
}
}
如您所见,我有过滤器,过滤器字段上的每个值更改都应调用 reload(...) 方法来获取新数据。
是否可以将过滤器中的字段分组到一个组中,并有可能实现更改处理程序?像这样:
public class ItemPresenter {
public interface Display {
TextBox getFilterItemName();
TextBox getFilterItemAmount();
Filter getFilter();
}
public ItemPresenter() {
addChangeValueHandlers();
private void addChangeValueHandlers() {
this.display.getFilter.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
display.reload(getItemList(display.getFilterBaseVersionName()
.getText(), display.getFilterItemAmount()
.getText()));
}
});
}
}
?
我认为您可以通过在 filterItemName 和 filterItemAmount 上注册相同的处理程序来实现或多或少相同的行为:
ChangeHandler handler = new ChangeHandler() {...}
this.display.getFilterItemAmount().addChangeHandler(handler);
this.display.getFilterItemName().addChangeHandler(handler);
我有一个这样的演示者:
public class ItemPresenter {
public interface Display {
TextBox getFilterItemName();
TextBox getFilterItemAmount();
}
public ItemPresenter() {
addChangeValueHandlers();
private void addChangeValueHandlers() {
this.display.getFilterItemName().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
display.reload(getItemList(display.getFilterBaseVersionName()
.getText()));
}
});
this.display.getFilterItemAmount().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
display.reload(getItemList(display.getFilterItemAmount()
.getText()));
}
});
}
}
如您所见,我有过滤器,过滤器字段上的每个值更改都应调用 reload(...) 方法来获取新数据。
是否可以将过滤器中的字段分组到一个组中,并有可能实现更改处理程序?像这样:
public class ItemPresenter {
public interface Display {
TextBox getFilterItemName();
TextBox getFilterItemAmount();
Filter getFilter();
}
public ItemPresenter() {
addChangeValueHandlers();
private void addChangeValueHandlers() {
this.display.getFilter.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
display.reload(getItemList(display.getFilterBaseVersionName()
.getText(), display.getFilterItemAmount()
.getText()));
}
});
}
}
?
我认为您可以通过在 filterItemName 和 filterItemAmount 上注册相同的处理程序来实现或多或少相同的行为:
ChangeHandler handler = new ChangeHandler() {...}
this.display.getFilterItemAmount().addChangeHandler(handler);
this.display.getFilterItemName().addChangeHandler(handler);