如何对字段进行分组以获取一个更改值处理程序

时间:2015-06-03 05:27:16

标签: java gwt

我有一个这样的演示者:

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()));
            }
        });
}
}

1 个答案:

答案 0 :(得分:0)

我认为通过在filterItemName和filterItemAmount上注册相同的处理程序,您可以实现或多或少相同的行为:

ChangeHandler handler = new ChangeHandler() {...}
this.display.getFilterItemAmount().addChangeHandler(handler);
this.display.getFilterItemName().addChangeHandler(handler);