2014-09-25 37 views
1

我有一個緩存,我想無效每當用戶在瀏覽器中發出F5請求。我正在運行一個JSF 2.0應用程序。有沒有辦法做到這一點?有沒有一種方法可以以編程方式檢測用戶何時在瀏覽器中按下F5按鈕?

+0

所以......基本上當一個頁面重新加載/刷新?或者你正在尋找特別追蹤F5鍵? – kolossus 2014-09-25 15:26:42

+0

@kolossus當頁面重新加載或刷新時,我正在尋找內部Java代碼。 – Inquisitive 2014-09-26 05:26:05

回答

2

使用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> 
      

OR

你可以完全跳過整個後臺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> 
    

這種方法的好處是,你寫更少的代碼,並且緩存清算機制仍執行只有時該請求是一個郵政局ck

0

我認爲這將有助於您檢測任何按鍵的按鍵。

請參閱此鏈接的關鍵代碼。 http://help.adobe.com/en_US/AS2LCR/Flash_10.0/henter code here elp.html?內容= 00000520.html

<rich:hotKey key="f5" onkeydown="if (event.keyCode == 116) return false;" handler="return false;" disableInInput="true" /> 
 
<rich:hotKey key="ctrl+R" onkeydown="if (event.keyCode == 123) return false;" handler="return false;" disableInInput="true" /> 
 
<rich:hotKey key="ctrl+f5" onkeydown="if (event.keyCode == 154) return false;" handler="return false;" disableInInput="true" />

+0

這段代碼我用來禁用按鍵。 – pratik 2015-04-25 05:33:41

+0

檢查您的鏈接是否工作 – tharif 2015-04-25 05:47:04

0

我上傳的the BootsFaces demo collection on GitHub運行F5檢測項目和書面a short blog post。基本上,Kolossus的答案是正確的。 ViewAction也在第一頁加載時觸發,所以我添加了幾行來檢測。

+1

如果用戶在多個瀏覽器窗口/選項卡中打開了相同的頁面,該怎麼辦? – BalusC 2015-07-11 00:54:11

+0

@BalusC好的提示,像往常一樣。這不是我用例的一部分,所以我沒有對它進行調查。據我所知,多標籤支持要求你使用像CODI這樣的擴展,所以我們必須利用它。糾正我,如果我錯了 - 我可能是,就像我說過的,我從來不必支持多個選項卡或Windows之前。 – 2015-07-29 22:22:21

相關問題