在TextChangeListener中使用TextChangeEvent getText()和TextField getValue()有什么不同

时间:2015-07-30 08:26:36

标签: java vaadin7 iso

我是Vaadin的新手,我尝试过滤掉桌子上的数据。我添加一个声明为isoCode的TextField并向其添加TextChangeListener。

当我使用isoCode.getValue()获取值作为过滤字符串时,它不起作用。

但是当我使用TextChangeEvent event.getText()值时,它可以完美地工作。有人可以向我解释说明原因吗?

final TextField isoCode = new TextField(); 
isoCode.setInputPrompt("ISO Code");

isoCode.addTextChangeListener(new TextChangeListener(){
    private static final long serialVersionUID = 1L;
    SimpleStringFilter filter = null;
    @Override
    public void textChange(TextChangeEvent event) {

        /**
         * This code not working
         *
        if(isoCode.getValue().trim().length() > 0){ 
            filter = new SimpleStringFilter("ISO Code", event.getText(),true, false);
            appn0010Form.removeAllContainerFilters();
            appn0010Form.addContainerFilter(filter);
        }
        */


        /**
         * This code is working
         */
        if(event.getText().trim().length() > 0){  
            filter = new SimpleStringFilter("ISO Code", event.getText(),true, false);
            appn0010Form.removeAllContainerFilters();
            appn0010Form.addContainerFilter(filter);
        } 
    } 

}); 

1 个答案:

答案 0 :(得分:0)

isoCode.getValue()在绑定最新值之前给出textfield的值。

event.getText()在绑定最新值后为您提供值。

新输入的值只有在Textfield模糊后才会绑定。