【问题标题】:MM/dd/yyyy format in p:calendarp:calendar 中的 MM/dd/yyyy 格式
【发布时间】:2015-11-07 08:33:05
【问题描述】:

参考this问题, 它仍然接受8/1/201987 作为日期,其中201987 不是yyyy 格式。

如何保证yyyy格式?我需要在 bean 中验证它吗?

我使用了下面的代码:

<p:calendar ...>
    <f:convertDateTime pattern="dd/MM/yyyy" />
</p:calendar>

但由于它使用SimpleDateFormat,如果您提供yyyy,它会接受任意位数。

如何解决这个问题?

【问题讨论】:

  • 避免&lt;f:convertDateTime&gt; 混乱,只需使用与&lt;p:calendar&gt; 关联的pattern 属性。如有必要,请使用您自己的自定义转换器(可能使用实现不佳的 java.util.Date API 以外的其他转换器)。

标签: jsf primefaces calendar


【解决方案1】:

尝试使用 p:calender 的掩码,例如 mask="99/99/9999",它对我来说很好用

<p:calendar value="8/1/201989" mask="99/99/9999">
    <f:convertDateTime pattern="dd/MM/yyyy" />
</p:calendar>

【讨论】:

  • 这个掩码的问题是它仍然将 55/55/5555 视为有效日期。有什么方法可以阻止用户输入大于 12 的月份和大于 31 的天数?
【解决方案2】:

您可以通过添加属性 mask="true"maxlength=10

来限制用户输入

【讨论】:

    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 2013-08-31
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多