Vaadin路由/导航

问题描述

所以我有一个RequestHandler(使用VaadinServiceInitListener):

public class ApplicationServiceInitListener implements VaadinServiceInitListener {

@Override
public void serviceInit(ServiceInitEvent event) {
    event.addRequestHandler((session,request,response) -> {
        ...
    });

}

然后在RequestHandler中,我想检查是否已登录用户。到目前为止一切顺利。

如果用户已登录,则将按常规处理该请求。如果没有,我想将他重定向到登录页面。请求处理程序有可能吗?

我像这样使用UI类的navigation-Method:

UI.getCurrent().navigate("..");

但是问题在于,在请求时,没有实例化UI,所以我将获得NPE。

解决方法

不是您的确切问题的答案(是否可以解决),但通常会出现在routing lifecycle docs中的BeforeEnterListener(您可以在其中进行重新路由)中。有关示例,请参见spring security tutorial中的代码:

void beforeEnter(BeforeEnterEvent event) {
    if (!LoginView.class.equals(event.getNavigationTarget()) && !SecurityUtils.isUserLoggedIn()) {
        event.rerouteTo(LoginView.class);
    }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...