我遇到的問題是與PrimesFaces 3.4.1日曆。當使用通過按鈕或輸入區域焦點激活的彈出日期選擇器時,您只能選擇工作正常,有效的日期!PrimeFaces日曆接受無效的日期作爲輸入
當您手動添加日期到輸入字段時,如果添加無效日期,PrimeFaces日曆組件將其轉換爲有效日期並將其發送出去,然後將其發送出去,這意味着後端驗證是不行的。下面的一些有趣的翻譯:
- 30/02/2012成爲2014年2月6日
- 322/05/2012成爲2038年5月10日
- 2012年1月14日成爲2012/4/1
要重新創建這個瘋狂看看PrimeFaces Calendar Showcase。
我已經看到使用readOnlyInput='true'
屬性的解決方案,但似乎只能防止在字段中輸入的字母不是數字或斜線。下面是日曆的一個實例我已經實現:
<p:calendar id="fldDateOfBirth"
value="#{pc_CreateUser.user.dateOfBirth}"
binding="#{pc_CreateUser.dobComp}"
navigator="true"
pattern="dd/MM/yyyy"
maxlength="10"
yearRange="-100"
validator="#{pc_CreateUser.validateDOB}"
title="#{msg.user_date_format_default_tip}"
converterMessage="#{msg.user_error_dob_invalid}"
readOnlyInput="true"
showOn="button" />
明智的解決方案,我願意接受任何建議:
- 這是在PrimeFaces一個共同的問題是什麼?是否有我可以用來修復 的技巧?
- 我可以使用JavaScript驗證發送之前的日期,或者是否完全禁止所有用戶輸入?
- 還有什麼我沒有想到的!
在此先感謝,這已經導致我幾個星期的問題!
這工作一種享受!感謝您的解決方案和您的解釋,非常感謝。 – JonnyIrving
不客氣。 – BalusC
如果使用舊版本的primefaces使用此convertDateTime會導致轉換返回null,並且您將收到javascript錯誤。 (getDate == null)。如果你可以升級到PF 4,那麼很不幸,我不能和正在尋找替代品:) – VeenarM