我有一個緩存,我想無效每當用戶在瀏覽器中發出F5請求。我正在運行一個JSF 2.0應用程序。有沒有辦法做到這一點?有沒有一種方法可以以編程方式檢測用戶何時在瀏覽器中按下F5按鈕?
回答
使用FacesContext.getCurrentInstance().isPostBack()
來檢查頁面請求是否是重新加載同一頁面。一個理想的點是在<f:viewAction/>
(新的JSF-2.2)或preRenderView
事件。
定義支持bean方法
public static boolean isPostback() { return FacesContext.getCurrentInstance().isPostback(); }
選其一
-
<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: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
我認爲這將有助於您檢測任何按鍵的按鍵。
請參閱此鏈接的關鍵代碼。 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" />
我上傳的the BootsFaces demo collection on GitHub運行F5檢測項目和書面a short blog post。基本上,Kolossus的答案是正確的。 ViewAction也在第一頁加載時觸發,所以我添加了幾行來檢測。
如果用戶在多個瀏覽器窗口/選項卡中打開了相同的頁面,該怎麼辦? – BalusC 2015-07-11 00:54:11
@BalusC好的提示,像往常一樣。這不是我用例的一部分,所以我沒有對它進行調查。據我所知,多標籤支持要求你使用像CODI這樣的擴展,所以我們必須利用它。糾正我,如果我錯了 - 我可能是,就像我說過的,我從來不必支持多個選項卡或Windows之前。 – 2015-07-29 22:22:21
- 1. 有沒有一種方法使用jquery來檢測後退按鈕被按下跨瀏覽器
- 2. 有沒有一種方法可以檢測Chrome瀏覽器是否在隱身模式下用於API <20?
- 3. 以編程方式按下按鈕
- 4. iPhone:以編程方式按下按鈕
- 5. 以編程方式按下此按鈕
- 6. 有沒有一種方法或我可以用來使按鈕按自己?
- 7. 有沒有辦法以編程方式測試瀏覽器GPU加速?
- 8. Ios-有沒有一種方法可以以編程方式檢測某人何時按下其撥號盤上的號碼?
- 9. 有沒有辦法使用web瀏覽器點擊按鈕的一般方式
- 10. 如何在按下按鈕時以編程方式導航到下一個ViewController?
- 11. 以編程方式檢索窗口句柄和按下按鈕
- 12. 在FitNesse中 - 有沒有一種方法可以以編程方式查看測試是否失敗/通過
- 13. 有沒有一種方法可以按列「uniq」?
- 14. 有沒有一種方法可以使用button_to控制按鈕的類?
- 15. 以編程方式合併單選按鈕和圖像瀏覽
- 16. 以編程方式在Xcode中按下UITabBar按鈕
- 17. 有沒有辦法以編程方式將視圖從一個按鈕居中到另一個按鈕?
- 18. 有沒有一種方法可以使用WebKit以編程方式下載用於離線查看的網頁?
- 19. 有沒有一種方法可以在Web應用程序中以編程方式播放音頻?
- 20. Android:按下按鈕時以編程方式添加EditText
- 21. 有沒有一種方法可以讓Chrome瀏覽器的title =屬性工作?
- 22. 以編程方式調用瀏覽器
- 23. 有沒有一種方法可以檢測哪些活動將在點擊後退按鈕後恢復?
- 24. 在Unix環境中,有沒有一種方法可以以編程方式調用C中的哪個?
- 25. 有沒有一種方法可以在主要的FOREX消息下以編程方式避免EA交易?
- 26. 有沒有一種方法可以讓程序包瀏覽器顯示在eclipse中有TODO的程序集?
- 27. iOS中有沒有一種方法可以觀察被按下的主頁按鈕?
- 28. 有一種方法可以在jQuery中使用一些瀏覽器信息?
- 29. 有沒有一種方法可以鎖定屏幕上的按鈕?
- 30. 有沒有一種方法可以清理我按鈕上的ng類定義?
所以......基本上當一個頁面重新加載/刷新?或者你正在尋找特別追蹤F5鍵? – kolossus 2014-09-25 15:26:42
@kolossus當頁面重新加載或刷新時,我正在尋找內部Java代碼。 – Inquisitive 2014-09-26 05:26:05