【问题标题】:Jsf Template Showing Incorrect Url显示错误 URL 的 Jsf 模板
【发布时间】:2014-01-07 20:36:06
【问题描述】:

我正在使用 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,即使选择了菜单中的不同链接。

【问题讨论】:

  • 您是否检查过,即通过 Firebug,单击浏览器中的链接后是否请求/检索了预期的 .xhtml/.jsf 页面?我猜,与您点击的内容无关,您的浏览器请求的页面总是相同的。
  • 我在模板中使用了 iframe。
  • 嗯,iFrame-Request 在您请求/单击按钮后仍应由 FireBug 显示。

标签: jsf servlets jsf-2 richfaces servlet-filters


【解决方案1】:

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

  • 它决定在服务器端传送哪个页面。

从那一侧,独立于您点击的内容,例如一个 JSF Mojarra 实现,请求的页面可能总是相同的 - 只是参数不同......并且服务器会重定向到所需的页面(这对于您的过滤器来说太迟了;-))。

更新:我会尝试在 RENDER RESPONSE 阶段之前或之后执行阶段侦听器,因为应该解决导航目标。在侦听器中类似于(未经测试的示例代码)

public void afterPhase(PhaseEvent event)
{
  FacesContext context = event.getFacesContext();
  String viewId = context.getViewRoot().getViewId();
  ....
 }

可能会帮助您解析最终网址。

如果您想解析主菜单的 url(我猜,链接是静态的,不需要调用托管 bean 方法),您也可以使用h:outputLink,它解析为固定网址(有关详细信息,请参阅When should I use h:outputLink instead of h:commandLink?) - 这将适用于您现有的侦听器。

希望对你有帮助...

【讨论】:

  • 有什么解决方案可以在过滤器中恢复 url? @L-雷
  • 查看更新。如果可行,请提供反馈...是的,赞赏。
  • view id 没有显示完整的 url。如果要显示的 url 是localhost:8080/authenticationmodule/faces/xhtml/authentication/…,则只获取 xhtml/authentication/userUsageDetails.xhtml 任何解决方案@L-Ray
猜你喜欢
  • 1970-01-01
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 2011-03-12
  • 2014-09-11
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多