2011-05-13 56 views
0

我有兩個JSF頁面,index.xhtml [index]和main.xhtml [main]。在索引上,我有一個dropDown,當我選擇並提交時,應用程序在與輔助bean進行交互之後導航到main。如何刷新JSF視圖(Richfaces)

問題是這樣的(填充有 'D1', 'D2' 和 'D3' 給出一個下拉):

  • 指數:選擇 'D1'
  • 主:示出了具有D1數據頁。點擊退出。返回索引
  • 索引:刷新主bean數據項。選擇「D2」
  • 主:由於在輔助bean錯誤,所示的主頁,但仍與本

我已經嘗試了許多方法來溝視圖的內容時面D1數據返回到歡迎索引頁面,但它在客戶端一直懸而未決。

什麼是清除客戶端組件樹/視圖的最有效方式,因此當用戶進出主應用程序頁面並選擇新數據時,舊數據將被丟棄?

乾杯

回答

1

把豆中(在會話範圍從而)請求或視圖範圍,使JSF將創建新的請求,新豆,並指示web瀏覽器不緩存頁面,使其將不會使用緩存中的舊輸入值重新顯示頁面。

更改bean範圍是一件小事。

HttpServletResponse hsr = (HttpServletResponse) response; 
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
hsr.setDateHeader("Expires", 0); // Proxies. 
chain.doFilter(request, response); 
:禁止用於JSF請求瀏覽器的緩存可以通過其被映射上 <servlet-name>facesServlet</servlet-name>和基本上沒有下文中 doFilter()方法的過濾器類來完成