Vaadin:将值从主页面传递到窗口页面

时间:2016-11-14 02:26:40

标签: java java-ee vaadin

我是Vaadin 7的新手,目前我正面临从主页到窗口页面传递值的问题。

当我点击主页面中的一个事件时,它会打开一个窗口页面,这里我需要从主页面获取值。基于该值,我必须在Window页面中控制逻辑。这是示例代码,我尝试过。我想将“beNumber”参数值发送到窗口页面。

if(isMyBuyersPresent)
{
    //You can re-find as below, or refactor the code and 
    //create a list in the above snippet and grab the first element here

    mybuyers= driver.findElements(By.yourLocator)
}

2 个答案:

答案 0 :(得分: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);

    }
});

答案 1 :(得分:0)

如果要传递非最终变量,请不要使用匿名类。最简单的解决方案是创建实现MouseEvents.ClickListener的Class并将该值传递给构造函数。这使您有能力重复使用它。

应该是这样的。

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

                     }


}

如果你想在多个地方使用它,这种方法也很有用。