我編寫了一個自定義驗證器來驗證所有表單字段。我正在使用Incefaces 3.2和JSF 2.0。我注意到整數類型的UIInput有多個問題。如果我沒有在表單中輸入任何數據並點擊提交,我可以使用myUIInput.getValue()檢查自定義驗證器中的字段值並啓動所需的驗證。UIInput的isLocalValueSet總是在自定義驗證器中返回true
當我在字段中輸入一些值並提交時,我在我的自定義驗證器中使用getSubmittedValue()來驗證它。到現在爲止還挺好。當我從UI中刪除該字段的值並將其提交後,getValue()仍然保留舊值。 isLocalValueSet()總是返回null。
我試過在第一次啓動驗證後重置下面的內容。它也沒有幫助。
myInput.setValue(null);
myInput.setSubmittedValue(null);
myInput.setLocalValueSet(false);
如何將我的字段狀態重置爲初始值?如何在啓動驗證後正確設置isLocalValueSet()?提前致謝。
感謝BalusC。我們在我們的jsf2,Icefaces 3應用程序的某些形式上使用JSR 303 bean驗證。我們遇到了控制驗證順序的問題。我想刪除所有驗證,但請求對象(dto)與項目的其他類緊密耦合。我們已經接近完成項目的包裝了,如果沒有bean驗證,創建新的dto已經太遲了。所以,我寫了一個自定義驗證器,例如 。 –
Superman9999
2013-03-20 00:33:52
每次我提交表單時都會觸發此驗證器。如果未輸入任何值,我的客戶添加了最後一分鐘的要求以顯示整數字段爲空白。如果驗證(必需或格式)失敗,它必須設置爲空白。出於某種原因,getValue()和getSubmittedValue()沒有正確更新整型字段。我沒有字符串或日期字段的問題。作爲解決方法,我在UI上使用了一個字符串,如果它是一個有效的int值,則將其更改回整數。我還沒有探索添加轉換器的路線。 – Superman9999 2013-03-20 00:34:20