我有一個非常複雜的表單,包含大量的輸入和驗證器。對於用戶來說,花費相當長的時間(甚至一個小時)才能完成該操作,所以他們希望能夠保存草稿數據,即使它違反了像未輸入強制字段的規則。JSF如何臨時禁用驗證器來保存草稿
我相信這個問題對許多Web應用程序來說都很常見,但是找不到任何可以被實現的模式。你可以請建議如何實現這一目標?
現在我可以看到以下選項:
- 使用立即=「保存草稿」按鈕不起作用真的如UI數據不會被存儲在豆,所以我將無法訪問它。從技術上講,我可以在UI組件樹中找到數據,但遍歷這似乎不是一個好主意。
- 從頁面中刪除所有字段驗證,並在爲窗體定義的操作偵聽器中驗證數據programmaticaly。同樣,不是一個好主意,表單非常複雜,有很多字段,所以驗證以這種方式實現將非常麻煩。
- 實現自己的驗證,會被一些請求屬性,這將標準表單提交設置(與全面驗證預期)進行控制,將取消設置「保存爲草稿」提交(在驗證應跳過)。再次,不是一個好的解決方案,我需要爲我使用的所有驗證器提供自己的包裝器。
但是正如你所看到的,沒有人真的很合理。這個問題真的沒有簡單的解決方案嗎?
謝謝Balus。我喜歡你的想法選擇1,可能我應該能夠做相反的事情,當數據被階段監聽器加載並重新初始化EditableValueHolders時。 關於你的第二個建議,我在jQuery中找不到任何unserialize()函數,你將如何加載草稿數據? – Swiety 2010-05-06 17:10:14
通過相應地設置服務器端的託管bean屬性。 – BalusC 2010-05-06 18:16:25