2009-04-22 45 views
1

我有一個表單提交給一個servlet並使用doPost()方法處理。一旦表單被提交,用戶就會被帶到另一個帶有「後退」按鈕的頁面(而不是瀏覽器的後退按鈕)。如果單擊「後退」按鈕,表單應重新填充原始輸入。我怎樣才能做到這一點?如何使用Java重新填充表單?

+1

當我第一次閱讀標題時,我想它說:「我如何恢復使用Java」 – bigmonachus 2009-04-22 15:02:12

回答

0

如果您使用javascript:history.back(),您的瀏覽器應自動爲您處理。

+2

這將觸發瀏覽器有關重新提交POST數據的警告。 – 2009-04-22 14:58:38

2

您有責任保留信息並手動重新填寫表格。您可以通過以下兩種方式之一進行:

  1. 要麼你推內容 客戶端和讀回的時候 必要的。
  2. 或者您可以將該客戶端的 表單數據保存在 服務器空間中。

我更喜歡後面創建一個代表表單數據的模型。處理表格時,您可以保存該客戶端的副本。如果頁面重新加載,您可以檢查以前模型的存在。如果存在,則使用該數據填充表單。如果它不存在,則可以使用默認模型或空值。

將您的內容收集到一個模型中還有其他好處,以後會對您有所幫助。例如,如果對錶單進行了更改,並且在「提交」和「清除」按鈕旁邊有一個「撤消」按鈕,則可以輕鬆恢復到最後一個已知狀態。爲了活躍的「撤消」按鈕,你可以很容易做到:

boolean isDirty = savedModel.equals(currentModel); 

,啓用/使用布爾而不是噸「的if/else」語句,看是否有值禁用「撤消」按鈕改變。更乾淨。

Jeach!

0

您必須跟上用戶在表單中提交的數據。

您可以將該數據放在網址中,請求中或會話中。

確保在將它們放回表單時避開任何不安全的字符。

有很多web框架讓這種事情更容易做到。

StrutsStripes是想到的兩個。

0

後原來的形式提交你有幾個服務器端選項:

  1. 在會話保持表單值,並與「後退」操作調用的形式進行填充;
  2. 將表單值作爲參數添加到「返回」操作url,以使它們成爲請求的一部分。
0

如果用戶提交表單,數據是否放入數據庫?如果是這樣,只需查詢數據庫並重新填寫表單...如果不是,請考慮將數據保存到數據庫。

相關問題