Vaadin请求过滤器链过滤器?

时间:2015-06-19 07:29:22

标签: java servlets vaadin

Vaadin是否有办法挂钩请求链并在提供VaadinSession的实际请求/响应周期内执行操作?目前我使用的是javax.servlet.Filter,但似乎VaadinSession.getCurrent()设置得更深,而在过滤器本身中,它在chain.doFilter()之前和之后都未设置。

1 个答案:

答案 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;
    }
}
相关问题