【问题标题】:How to get the current View Name in Vaadin如何在 Vaadin 中获取当前视图名称
【发布时间】:2014-06-10 07:57:24
【问题描述】:

我正在使用 Vaadin 7。我想在治疗完成后将我的页面重定向到上一个页面。为此,我需要知道哪个视图调用了我的新视图,以便稍后重定向到它。我知道我必须在这里添加一些东西:

 getNavigator().addViewChangeListener(new ViewChangeListener() {

  @Override
  public boolean beforeViewChange(ViewChangeEvent event) {

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

任何想法我该怎么做?

【问题讨论】:

    标签: java view vaadin navigator


    【解决方案1】:

    您可以使用ViewChangeEvent.getOldView() 方法来检索View 对象。现在,默认情况下无法从那里获取视图的名称,因为理论上您可以使用多个名称注册相同的View。但假设每个视图只有一个名称,您可以这样做:

    创建一个接口,HasName,像这样:

    public interface HasName {
        String getName();
    }
    

    然后在所有View 类中实现HasName。在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
            }
        }
    } 
    

    【讨论】:

    • 它不起作用,我在尝试获取名称时得到了NullPointerException
    • 哦,对了,如果您是第一次打开应用程序,我猜getOldView() 会返回null。我在示例代码中添加了null 检查。
    • HasName 类的包是什么?
    猜你喜欢
    • 2016-12-26
    • 2019-04-06
    • 2011-09-12
    • 2011-03-20
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多