2014-07-23 7 views
1

나는 새로운 vaadin이고 이제 다음과 같은 문제가 발생합니다. 몇 가지 탭이 포함 된 TabSheet가 있습니다. enter image description hereValueChangeListener를 사용하지 않음

이제 내 세금 코드 구성 요소가 즉시 모드와 다른 사람에 살고 있고 그것은 다음과 같은 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

당신은 탭을 어떤 전환이 발생하면? 텍스트 필드에서 값을 저장하고 다시 복원합니까? 그렇다면 valuechange listener를 추가하기 전에 수행하십시오. – d2k2

+0

내 목표는 사용자가 taxCode의 값을 chenge 한 다음 tab1으로 전환 할 때 ValueChangeListener를 피하는 것입니다. – Skizzo

+0

tabchanger가 탭 변경으로 인해 트리거되는 이유가 궁금합니다. 더 많은 코드를 게시 할 수 있습니까? – d2k2

답변

0

이 간단한 테스트 앱은 실제로 텍스트 필드의 값을 변경할 때만 탭을 전환 할 때 ValueChangeEvent를 실행하지 않습니다. 행동에 영향을 줄 수있는 뭔가가 더 있으십니까?

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

} 

은}