如果您使用 Vaadin 7 Navigator进行 URI 导航,您可以注册为 ViewChangeListener:如果您在 beforeViewChange 方法中返回“false”,您可以停止导航到新视图(如果您愿意,可以显示错误消息) .
例如,
navigator.addViewChangeListener(new ViewChangeListener() {
@Override
public boolean beforeViewChange(ViewChangeEvent event) {
View newView = event.getNewView();
String newViewName = event.getViewName();
return canUserAccessView(newView, newViewName);
}
@Override
public void afterViewChange(ViewChangeEvent event) {
//NO-OP
}
});
我的主要项目没有使用 Navigator,因为它是在 Vaadin 7 之前开始的:我们开发了一个非常相似的框架,它使用 URIFragmentListener 来做同样的事情。