我是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)
}
答案 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);
}
}
如果你想在多个地方使用它,这种方法也很有用。