我是新来的,现在我遇到了下面的麻烦。我有一个包含几个选项卡的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组件时,都会调用方法taxCode。当用户从Tab2切换到Tab1时也会发生这种情况,而我不想这样做?
我怎样才能解决这个问题?
发布于 2014-07-28 07:01:47
这个简单的测试应用程序在切换选项卡时不会触发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);
}}
https://stackoverflow.com/questions/24915363
复制相似问题