我遇到的问题是 PrimesFaces 3.4.1 日历。当使用通过按钮或输入字段焦点激活的弹出日期选择器时,您只能选择工作正常的有效日期,快乐的日子!
当您手动将日期添加到输入字段时,问题就出现了,如果您添加无效日期,PrimeFaces 日历组件会尽力将其转换为有效日期然后发送,这意味着后端验证是不行的. 下面是一些有趣的翻译:
- 2012 年 2 月 30 日变为 2014 年 2 月 6 日
- 322/05/2012 变为 5/10/2038
- 2012 年 1 月 14 日变为 2012 年 4 月 1 日
要重现这种疯狂,请查看PrimeFaces 日历展示。
我已经看到了使用该属性的解决方案,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 在发送日期之前验证日期或完全阻止所有用户输入吗?
- 还有什么我没想到的!
在此先感谢,这已经给我带来了几个星期的问题!