我需要在 Vaadin 中添加一个拦截所有请求的过滤器
I need to add a filter in Vaadin that intercepts all requests
我在会话中设置了一个属性,该属性为 true 或 false。如果该属性为真,我需要 vaadin 拦截所有请求并将其重定向到新的自定义 Vaadin 页面。我知道有一个名为 VaadinServiceInitListener 的接口,但是我无法将用户重定向到自定义页面,因为 UI.getcurrent() returns null.
这是我的代码:
@Override
public void serviceInit(ServiceInitEvent serviceEvent) {
serviceEvent.getSource().addSessionInitListener(initEvent -> {
initEvent.getSession().addRequestHandler(globalRequestHandler());
});
}
public RequestHandler globalRequestHandler() {
return (session, vaadinRequest, response) -> {
session.access(() -> {
if (isSessionlocked()) {
UI.getCurrent().navigate(MyCustomView.class);
}
});
return false;
};
}
尝试重定向到所需路径
response.setStatus(HttpStatus.SC_TEMPORARY_REDIRECT);
response.setHeader(HttpHeaders.LOCATION, path);
我在会话中设置了一个属性,该属性为 true 或 false。如果该属性为真,我需要 vaadin 拦截所有请求并将其重定向到新的自定义 Vaadin 页面。我知道有一个名为 VaadinServiceInitListener 的接口,但是我无法将用户重定向到自定义页面,因为 UI.getcurrent() returns null.
这是我的代码:
@Override
public void serviceInit(ServiceInitEvent serviceEvent) {
serviceEvent.getSource().addSessionInitListener(initEvent -> {
initEvent.getSession().addRequestHandler(globalRequestHandler());
});
}
public RequestHandler globalRequestHandler() {
return (session, vaadinRequest, response) -> {
session.access(() -> {
if (isSessionlocked()) {
UI.getCurrent().navigate(MyCustomView.class);
}
});
return false;
};
}
尝试重定向到所需路径
response.setStatus(HttpStatus.SC_TEMPORARY_REDIRECT);
response.setHeader(HttpHeaders.LOCATION, path);