【问题标题】:vaadin viewchangelistener change newViewvaadin viewchangelistener 更改 newView
【发布时间】:2014-07-31 15:21:02
【问题描述】:

如果用户未通过身份验证并且 newView 是 SecuredView 的实例,我会尝试更改导航的 newView。我的方法是检查 beforeViewChange 方法内部是否给出了约束。

public boolean beforeViewChange(ViewChangeEvent event) {
    if (event.getNewView().getClass().isInstance(SecuredView.class) && VaadinService.getCurrentRequest().getUserPrincipal() == null) {
        event.getNavigator().navigateTo("login");
        return false;
    }
        return true;
    }
}

但这会导致无限循环的重定向...我如何更改 newView 并停止当前的导航事件?

【问题讨论】:

    标签: java navigation vaadin vaadin7


    【解决方案1】:

    1) 如果您的View 不是“正确的观点”,它将陷入无限循环。试试这个简单的视图:

    public class SecuredView extends VerticalLayout implements View {
    
        public SecureView() {
            addComponent(new Label("Secured View"));
        }
    
        @Override
        public void enter(ViewChangeEvent event) {
        }
    
    }
    

    2) 您的 if 语句需要更改:

    代替:

    event.getNewView().getClass().isInstance(SecuredView.class)
    

    写:

    SecuredView.class.isInstance(event.getNewView());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多