如何获取Vaadin中的当前视图名称

时间:2014-06-10 07:57:24

标签: java view vaadin navigator

我正在使用Vaadin 7.我希望在完成治疗后将我的页面重定向到之前的页面。为此我需要知道哪个View称为我的新视图,以便稍后可以重定向到它。我知道我必须在这里添加一些内容:

 getNavigator().addViewChangeListener(new ViewChangeListener() {

  @Override
  public boolean beforeViewChange(ViewChangeEvent event) {

    myNewView.REDIRECT_TO = //here is the problem :)
}     

任何想法我该怎么做?

1 个答案:

答案 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
        }
    }
}