【问题标题】:Disable ValueChangeListener禁用 ValueChangeListener
【发布时间】:2014-07-23 15:57:37
【问题描述】:

我是 vaadin 的新手,现在我遇到了以下麻烦。我有一个包含几个标签的 TabSheet。

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

    TextField taxCode = new TextField();
    taxCode.setImmediate(true);
    taxCode.addValueChangeListener(new ValueChangeListener() {

            @Override
            public void valueChange(ValueChangeEvent event) {

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

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

我该如何解决这个问题?

【问题讨论】:

  • 切换标签时会发生什么?您是否保存文本字段中的值并再次恢复它?如果是这样,请在添加 valuechange 侦听器之前执行此操作。
  • 我的目标只是在用户更改taxCode的值然后切换到tab1时避免ValueChangeListener
  • 我想知道为什么 valuechangelistener 是由选项卡更改触发的。也许您可以发布更多代码?
  • 我想知道你为什么使用taxCode.isModified() 这是没用的,或者这可能是导致问题的原因。

标签: vaadin vaadin7


【解决方案1】:

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

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

}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-09
    • 2013-01-22
    • 2011-09-16
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 2014-04-19
    • 2011-04-05
    相关资源
    最近更新 更多