我正在使用Vaadin 7.我希望在完成治疗后将我的页面重定向到之前的页面。为此我需要知道哪个View称为我的新视图,以便稍后可以重定向到它。我知道我必须在这里添加一些内容:
getNavigator().addViewChangeListener(new ViewChangeListener() {
@Override
public boolean beforeViewChange(ViewChangeEvent event) {
myNewView.REDIRECT_TO = //here is the problem :)
}
任何想法我该怎么做?
答案 0 :(得分:1)
您可以使用ViewChangeEvent.getOldView()
方法检索View
对象。现在,默认情况下无法从那里获取视图的名称,因为从理论上讲,您可以使用多个名称注册相同的View
。但假设每个视图只有一个名称,可以执行以下操作:
创建一个界面HasName
,如下所示:
public interface HasName {
String getName();
}
然后在所有HasName
课程中实施View
。在Navigator
中注册视图时,请使用getName()
方法来引用View
的名称。之后,您只需在ViewChangeListener
中进行投射,然后使用相同的方法访问该名称。
getNavigator().addViewChangeListener(new ViewChangeListener() {
@Override
public boolean beforeViewChange(ViewChangeEvent event) {
View oldView = event.getOldView();
if (oldView != null) {
String oldViewName = ((HasName) oldView).getName();
// do stuff with oldViewName
}
}
}