【发布时间】:2012-11-25 16:02:45
【问题描述】:
我遇到的问题是 PrimesFaces 3.4.1 日历。当使用通过按钮或输入字段焦点激活的弹出日期选择器时,您只能选择工作正常的有效日期,快乐的日子!
当您在输入字段中手动添加日期时会出现问题,如果您添加无效日期,PrimeFaces 日历组件会尽力将其转换为有效日期然后发送,这意味着后端验证是不行。下面是一些有趣的翻译:
- 30/02/2012 变为 2/6/2014
- 322/05/2012 变为 5/10/2038
- 01/14/2012 变为 4/1/2012
要重现这种疯狂,请查看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 来验证日期吗? 完全阻止所有用户输入?
- 还有什么我没想到的!
在此先感谢,这已经给我带来了几个星期的问题!
【问题讨论】:
标签: java validation jsf primefaces calendar