如何在请求周期onbegin请求中添加一个监听器?

时间:2013-05-17 08:01:55

标签: listener wicket-1.6

我们正在尝试获取服务器名称,会话ID浏览器信息...以将信息保存在MDC中以进行记录。

为此,我们尝试在RequestCycle onBeginRequest()的{​​{1}}中添加一个监听器。 我添加了一个类如下:

IRequestCycleListener

现在在哪里添加监听器以获取上述信息?

1 个答案:

答案 0 :(得分:3)

在您的WebApplication函数中扩展AuthenticatedWebApplicationinit()的课程中。

您需要获取请求周期侦听器并将新侦听器添加到列表中。

因此,如果您想输出所请求的URI,您可以执行以下操作:

getRequestCycleListeners().add( 
new AbstractRequestCycleListener()
{       
    public void onBeginRequest(RequestCycle cycle) 
    {                   
        if( cycle.getRequest().getContainerRequest() instanceof HttpServletRequest )
        {
            HttpServletRequest containerRequest = 
                (HttpServletRequest)cycle.getRequest().getContainerRequest();
            System.out.println("URI="+containerRequest.getRequestURI() );
        }
    };
}
);

获取浏览器信息几乎可以在任何地方完成,不一定只在请求中。

String userAgent = WebSession.get().getClientInfo().getUserAgent();