2011-04-19 11 views
1

我有一個h:inputTextf:convertNumber附加到它。區域設置設置爲de如何禁止h:inputText的分組分隔符?

根據語言環境,小數點分隔符是「,」,分組分隔符是「。」。

如果用戶輸入「72,5」,則輸入正確解釋爲「72和半」。但是如果我輸入72.5,則輸入被解釋爲725.

這可能導致輸入錯誤,因爲如果用戶意外地點擊「。」,則沒有警告或錯誤消息。代替 」,」。

有沒有一種方法可以防止這種行爲,而無需編寫自定義驗證器或JavaScript?我想使用jsf標準轉換器或驗證器?

到目前爲止,我嘗試了f:validateRegex連同f:convertNumberf:convertNumber與模式,但都沒有工作。

回答

2

轉換髮生在驗證之前。所以對於你的(定製)驗證器來說,它已經太晚了。您需要創建一個自定義轉換器並在那裏「驗證」。

+0

謝謝BalusC。所以最簡單的方法是編寫一個替代「。」的自定義轉換器。用「,」然後從我的自定義內部調用jsf的標準numberConverter?然後這兩個分隔符將被允許作爲小數分隔符。或者,如果我檢測到「」,我可以發出警告消息。「並讓轉換失敗。 – 2011-04-19 14:32:01

+1

當你準備好時,擴展'NumberConverter'並調用'super'。至於代碼邏輯,取決於不完全清楚的功能要求。你想默默地轉換或顯示錯誤?如果客戶**故意**使用1,000來表示千位而不是一位?這很複雜:) – BalusC 2011-04-19 14:47:13

+0

好吧,顯示錯誤消息將是最安全的,我認爲。它是存儲藥物劑量的醫療應用程序... – 2011-04-19 14:51:59