2014-02-19 43 views
0

我正在用jsf處理一個web應用程序,我對此很新。
用戶填寫和發送表單。服務器在後臺bean中接收表單,它執行所需的操作並重定向到不同的頁面。
問題在於,當用戶點擊瀏覽器的後退按鈕時,它會回到表單中填入用戶所引入數據的所有字段。我需要清理那張表格。
我試過在頁面加載時對字段進行手動清理,並且它不起作用,表單會重新填充以前的數據。
這個問題的任何幫助?

在此先感謝。JSF:當用戶點擊瀏覽器的歷史記錄時,如何避免表單填充數據?

回答

0

可能存在兩個問題:

  1. 你的瀏覽器中的值是出於禮貌罷了,禁用使用cache control或使用omnifaces' CacheControlFilter,你只是可以通過web.xml啓用。另請參閱how to do autocomplete="off" at form level in JSF以防止瀏覽器的自動填充功能填寫以前的值。

  2. 保存這些值的服務器端代碼仍然存在。您沒有提及您使用的範圍,但請記住,@ViewScoped beans,基本上存儲在會話中的所有內容在導航時不一定會被破壞。如果是這樣,他們自動銷燬你無法管理你的bean的生命週期,你需要重新設置形式重定向前值自己:

    @ManagedBean @SessionScoped 
    public class TestBean implements Serializable { 
        private String myString; 
    
        public String saveIt() { 
         doStuffWithString(); 
         myString = ""; 
         return "saved"; 
        } 
    } 
    
+0

謝謝您的回答。 2.是的,它是會話範圍的,但是對象在Java代碼中被置爲null,所以這不是問題。我已經在會話中調試了代碼,並且在執行操作之後,對象爲空,但是當返回瀏覽器時,它會再次填充。所以我現在要去嘗試檢查緩存控制。我也試圖做一個重置(表單),但我有問題來控制它只能執行一次。我也嘗試了autocomplete = off,但這不是我的問題的解決方案。再次感謝 – user3207908

+0

@ user3207908不客氣。如果它解決了您的問題,請確保您[將答案標記爲已接受](http://meta.stackexchange.com/a/5235)。 – mabi

+0

我試過禁用緩存,它的工作原理,所以這是一個很好的方法來解決我的問題,但最終當客戶告訴這個問題最終接受了一個不同的解決方案,不讓用戶回到表單頁面(使一個window.history.forward(1))。這不完全是它所要求的,但它填補了消費者的必要性。再次感謝。 – user3207908