首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用ValueChangeListener

禁用ValueChangeListener
EN

Stack Overflow用户
提问于 2014-07-23 15:57:37
回答 1查看 2K关注 0票数 1

我是新来的,现在我遇到了下面的麻烦。我有一个包含几个选项卡的TabSheet。

现在,我的税务代码组件设置为即时模式,其他组件具有以下ValueChangeLister

代码语言:javascript
复制
    TextField taxCode = new TextField();
    taxCode.setImmediate(true);
    taxCode.addValueChangeListener(new ValueChangeListener() {

            @Override
            public void valueChange(ValueChangeEvent event) {

                if(taxCode.isModified()){
                    searchByTaxCode(taxCode.getValue());
                }               
            }
        });

然后,每次用户将值更改为taxCode组件时,都会调用方法taxCode。当用户从Tab2切换到Tab1时也会发生这种情况,而我不想这样做?

我怎样才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-28 07:01:47

这个简单的测试应用程序在切换选项卡时不会触发ValueChangeEvent,只有在实际更改TextField中的值时才会触发。你有更多的东西可以影响你的行为吗?

代码语言:javascript
复制
public class TabSheetEventsUI extends UI {

@WebServlet(value = "/tabsheetevents/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = TabSheetEventsUI.class)
public static class Servlet extends VaadinServlet {
}

@Override
protected void init(VaadinRequest request) {

    TabSheet tabSheet = new TabSheet();

    Panel tab1 = new Panel("Tab 1");
    Panel tab2 = new Panel("Tab 2");
    tabSheet.addTab(tab1);
    tabSheet.addTab(tab2);

    final TextField tab1tf = new TextField("tab1tf");
    tab1tf.setImmediate(true);
    tab1tf.addValueChangeListener(new ValueChangeListener() {

        @Override
        public void valueChange(ValueChangeEvent event) {
            System.out.println("Value change event catched.");
        }
    });

    tab1.setContent(tab1tf);
    setContent(tabSheet);

}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24915363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档