Vaadin是否有办法挂钩请求链并在提供VaadinSession
的实际请求/响应周期内执行操作?目前我使用的是javax.servlet.Filter
,但似乎VaadinSession.getCurrent()
设置得更深,而在过滤器本身中,它在chain.doFilter
()之前和之后都未设置。
答案 0 :(得分:1)
我找到了一个解决方法。
首先,我无法插入请求处理程序链,因为没有这样的结构。为了模拟它,我将我的代码分成了预请求和后请求代码(在我的情况下它有点可以)。我在普通VaadinRequestHandler
中执行我的预请求内容并返回false(正常请求继续)。请求后的内容会转到javax.serlvet.Filter
中映射的web.xml
。
其次,如果其他人遇到同样的问题,并且代码也可以使用相同的模式进行拆分,那么这是一个预请求(vaadin-side)列表:
public class MyVaadinServlet extends VaadinServlet{
@Override
protected VaadinServletService createServletService(DeploymentConfiguration deploymentConfiguration) throws ServiceException {
VaadinServletService service = new VaadinServletService(this,
deploymentConfiguration){
@Override
protected List<RequestHandler> createRequestHandlers() throws ServiceException {
List<RequestHandler> handlers = super.createRequestHandlers();
handlers.add((session, request, response) -> {
// HERE GOES THE CODE
return false;
});
return handlers;
}
};
service.init();
return service;
}
}