2011-03-14 49 views
2

我使用JSF 1.2。我有,我有啊觀點:的commandButton具有以下作用:JSF如何強制重載當前頁面

#{myBean.saveSomeData} 

當我按一下按鈕,我想保存一些數據,這樣的保存可以改變我的觀點的顯示數據,我想強制重新加載(比如我的瀏覽器中的CTRL + F5)。

爲了做到這一點,我認爲這樣的代碼:

public void saveSomeData() { 
      ... Save some data ... 

     FacesContext context = FacesContext.getCurrentInstance(); 
     String viewId = context.getViewRoot().getViewId(); 
     ViewHandler handler = context.getApplication().getViewHandler(); 
     UIViewRoot root = handler.createView(context, viewId); 
     root.setViewId(viewId); 
     context.setViewRoot(root); 
} 

但是,當我這樣做,我的觀點的樹組件沒有重新加載。

所以,我不知道該如何重新加載。有人會有任何想法的方式來做到這一點?

非常感謝您的幫助。

Sylvain。

回答

1

將no-cache頭添加到響應,以便瀏覽器永遠不會緩存頁面。你可以用一個Filter來做到這一點,它映射到感興趣的url模式。例如*.jsf或僅在FacesServlet。讓FilterdoFilter()方法中設置以下標題:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
response.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
response.setDateHeader("Expires", 0); // Proxies. 
+0

它運行良好。感謝您的幫助 – sylsau 2011-03-16 16:50:38

+0

不客氣。 – BalusC 2011-03-16 16:53:23

相關問題