gpt4 book ai didi

jsf - 有没有办法以编程方式检测用户何时在浏览器中按下 F5 按钮?

转载 作者:行者123 更新时间:2023-12-05 03:14:15 25 4
gpt4 key购买 nike

我有一个缓存,每当用户在浏览器中发出 F5 请求时,我都想使它失效。我正在运行一个 JSF 2.0 应用程序。有办法做到这一点吗?

最佳答案

使用 FacesContext.getCurrentInstance().isPostBack() 检查页面请求是否是同一页面的重新加载。一个理想的位置是在 <f:viewAction/> 中。 (JSF-2.2 的新功能)或 preRenderView事件。

  1. 定义后台bean方法

    public static boolean isPostback() {
    return FacesContext.getCurrentInstance().isPostback();
    }
  2. 使用其中之一

    • <f:viewAction/>

      <f:metadata>
      <f:viewAction action="#{bean.isPostBack}" onPostBack="true"/>
      </f:metadata>
    • f:event

      <f:metadata>
      <f:event type="preRenderView" listener="#{bean.isPostBack}"/>
      </f:metadata>

您可以跳过整个支持 bean isPostBack一并检查,直接从页面直接执行清除缓存的方法。

  • <f:viewAction/>

        <f:metadata>
    <f:viewAction action="#{bean.clearCache}" rendered="#{facesContext.postBack}" onPostBack="true"/>
    </f:metadata>
  • f:event

        <f:metadata>
    <f:event type="preRenderView" rendered="#{facesContext.postBack}" listener="#{bean.clearCache}"/>
    </f:metadata>

这种方法的好处是您编写的代码更少,并且当请求是回发时您的缓存清除机制仍然执行

关于jsf - 有没有办法以编程方式检测用户何时在浏览器中按下 F5 按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26036546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com