我遇到的问题是PrimesFaces 3.4.1日历。当使用通过按钮或在输入字段焦点上激活的弹出日期选择器时,您只能选择有效的日期,该日期很好,很开心!
当您在输入字段中手动添加日期时,就会出现问题,如果您添加了无效日期,PrimeFaces日历组件会尽最大的努力将其转换为有效日期然后发送,这意味着后端验证是不可行的。以下是一些有趣的翻译:
要重现这种疯狂,请查看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" />
解决方案方面,我愿意接受任何建议:
在此先感谢您,这已经使我遇到了数周的问题!
该<p:calendar>
封面下使用SimpleDateFormat
其默认情况下又使用宽松的解析,导致溢出值,以滚动到下一个日期度量水平。例如1月32日将变成2月1日,依此类推。
在普通的Java而言,这可以通过关闭DateFormat#setLenient()
,传球false
。
用JSF术语,您基本上需要提供一个使用non-
lenient的自定义转换器DateFormat
。幸运的是,标准的JSF已经提供了开箱即用的功能<f:convertDateTime>
,因此您可以直接使用它。
<p:calendar ...>
<f:convertDateTime pattern="dd/MM/yyyy" />
</p:calendar>
我想验证用户输入的日期是否有效,格式是否正确。我使用这个块来检查用户的输入,但是当我输入一个无效的日期时,打印语句会给我奇怪的输出。 当是时,它打印
我想验证用户输入的日期是否有效,格式是否正确。我使用这个块来检查用户的输入,但是当我输入无效日期时,print语句会给我奇怪的输出。 当是时,它打印
我有一个java代码,以特定的格式输入日期。 现在我输入的是无效日期。但它返回的日期是2016年1月14日星期四18:31:30。为什么会这样?如何使其返回null作为日期?
我试图将用户输入转换为datetime值,但它在shell脚本中给出了无效的日期错误 $5用户正在输入2015年12月3日$6用户正在输入00:10:00
问题内容: 我正在尝试写一个允许我采用多种不同格式的格式,然后将格式转换为特定类型。由于项目的范围和已经存在的代码,我不能使用其他类型的格式化程序。 例如,我也想接受,但是当我打印时,我只想打印格式化并在我打电话时使用该格式 有人可以就如何使用 这是我的方法: 我没有在网上找到一个很好的/可行的例子。 问题答案: 我已经测试了这个 JDK 1.8.0_131为Mac OS X 和 JDK 1.8.