我是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并且我不想要这个时,会发生这种情况吗?
如何解决此问题?
答案 0 :(得分:0)
这个简单的测试应用程序在切换选项卡时不会触发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);
}
}