2016-11-14 20 views
1

Vaadin 7を初めて使用しました。現在、メインページからウィンドウページへのパス値に問題があります。Vaadin:メインページからウィンドウページに値を渡す

メインページでイベントをクリックすると、ウィンドウページが開きます。メインページから値を取得する必要があります。その値に基づいて、私はWindowページのロジックを制御する必要があります。ここではサンプルコードを試しています。私は "beNumber"パラメータ値をウィンドウページに送りたい。

pan[beNumber].addClickListener(new MouseEvents.ClickListener() { 

         private static final long serialVersionUID = 1L; 

         @Override 
         public void click(MouseEvents.ClickEvent event) { 

            // Create a sub-window and set the content 
          Window subWindow = new Window("Patient Transfer", new WardMovementView()); 
          subWindow.setCaptionAsHtml(true); 
          subWindow.setModal(true); 
          subWindow.setWidth("1200px"); 
          subWindow.setHeight("800px"); 
          UI.getCurrent().addWindow(subWindow); 

         } 
        }); 

答えて

0

他の場所でbeNumberを再利用するかどうかによって異なります。 メインクラスにgetBENumber()メソッドを公開し、それをサブウィンドウから取得します。

他の方法は、Windowをサブクラス化し、beNumberを外部から設定できるメソッドを持つことです。このよう

pan[beNumber].addClickListener(new MouseEvents.ClickListener() { 

    private static final long serialVersionUID = 1L; 

    @Override 
    public void click(MouseEvents.ClickEvent event) { 

     // Create a sub-window and set the content 
     Window subWindow = new PatientTranfserWindow("Patient Transfer", new WardMovementView()); 
     subWindow.setCaptionAsHtml(true); 
     subWindow.setModal(true); 
     subWindow.setWidth("1200px"); 
     subWindow.setHeight("800px"); 
     subWindow.setBENumber(beNumber); 
     UI.getCurrent().addWindow(subWindow); 

    } 
}); 
0

あなたは非final変数を渡したい場合は、匿名クラスを使用してはいけません。簡単な解決策は、MouseEvents.ClickListenerを実装するクラスを作成し、その値をコンストラクタに渡すことです。それはあなたにそれを再利用する能力を与えます。

これは次のようになります。

pan[beNumber].addClickListener(new MyCustomListener(beNumber)); 

class MyCustomListener implements MouseEvents.ClickListener{ 

final int beNumber;//I guess you use int in your arrays 

public MyCustomListener(int beNumber){ 
this.beNumber = beNumber; 
} 
@Override 
public void click(MouseEvents.ClickEvent event) { 

           // Create a sub-window and set the content 
         Window subWindow = new Window("Patient Transfer", new WardMovementView(beNumber));//pass that var to your custom component if you want to use it 
         subWindow.setCaptionAsHtml(true); 
         subWindow.setModal(true); 
         subWindow.setWidth("1200px"); 
         subWindow.setHeight("800px"); 
         UI.getCurrent().addWindow(subWindow); 

        } 


} 

このaproachは、複数の場所で使用したい場合にも非常に便利です。

関連する問題