显示错误Url的Jsf模板

显示错误Url的Jsf模板,jsf,servlets,jsf-2,richfaces,servlet-filters,Jsf,Servlets,Jsf 2,Richfaces,Servlet Filters,我正在使用jsf2和RichFaces。我想跟踪用户浏览的每个页面 为此,我创建了Servelet过滤器,它截取被请求的页面。在我的项目中,我使用jsf模板特性,其中页眉和页脚是固定的。在主体部分,我定义了menu.xhtml和一个iframe标记。每当用户单击菜单上的任何链接时,响应都会指向iframe 我的问题是,我没有获得过滤器中请求的页面的正确url 我的过滤器捕捉 下面显示的是过滤器,查找xhtml页面 chain.doFilter(request, response); HttpS

我正在使用jsf2和RichFaces。我想跟踪用户浏览的每个页面

为此,我创建了Servelet过滤器,它截取被请求的页面。在我的项目中,我使用jsf模板特性,其中页眉和页脚是固定的。在主体部分,我定义了menu.xhtml和一个iframe标记。每当用户单击菜单上的任何链接时,响应都会指向iframe

我的问题是,我没有获得过滤器中请求的页面的正确url

我的过滤器捕捉

下面显示的是过滤器,查找xhtml页面

chain.doFilter(request, response);

HttpSession session = req.getSession(false);
if( null != session && (uri.contains(".xhtml") || null != session.getAttribute("userid"))){
    if(null != session.getAttribute("userid")){
        String userid = session.getAttribute("userid").toString();
        //for saving usage details 
        if(uri.contains(".xhtml")){                           
            System.out.println(".......Requeted Page.........."+req.getRequestURL().toString());
        saveUserUsage(req);
        }
    }
}

即使选择了菜单中的不同链接,进入过滤器的url仍然是userdeskop.xhtml。

独立于单击菜单的相同url的原因可能是:

  • 它决定在服务器端交付哪个页面
从这一方面来说,独立于您点击的内容,例如JSF Mojarra实现,请求的页面可能总是相同的-只是参数不同。。。并且服务器重定向到所需的页面(这对于您的过滤器来说已经太晚了,无法识别;-)

更新:我会尝试在渲染响应阶段之前或之后执行一个阶段侦听器,因为在那里导航目标应该得到解决。在侦听器中,类似(未测试的示例代码)

可能会帮助您解析最终url

如果您只想解析主菜单的URL(我想,链接是静态的,不需要调用托管bean方法),您也可以使用
h:outputLink
,它解析为固定URL(有关详细信息,请参阅)-这将与您已经存在的侦听器一起工作


希望能有所帮助……

您是否已通过Firebug进行检查,即在单击浏览器中的链接后,是否请求/检索了预期的.xhtml/.jsf页面?我猜,与您单击的内容无关,您的浏览器请求的页面始终是相同的。我在我的tempalte中使用了iframe。在您请求iframe请求/单击按钮后,iframe请求仍然应该由FireBug显示。有什么解决方案可以将url恢复到筛选器中吗@L-Ray查看更新。如果有效的话,给出反馈。。。是的,uptml.view id没有显示完整的url。如果要显示的url是,则只获取xhtml/authentication/userUsageDetails.xhtml any solution@L-Ray
public void afterPhase(PhaseEvent event)
{
  FacesContext context = event.getFacesContext();
  String viewId = context.getViewRoot().getViewId();
  ....
 }