我有一个具有日期字段的Seam / JSF应用程序。
当用户输入01.01.11
时,它会将其解释为01.01.0011
,这显然是不正确的。正确的值应为01.01.2011
有人遇到过这个吗?你是怎么解决的? xhtml如下:
<h:inputText value="#{budgetHandler.grantedFrom}">
<s:convertDateTime type="date" pattern="dd.MM.yyyy"/>
</h:inputText>
答案 0 :(得分:0)
这不是Y2K问题。这只是一个用户错误。您要求用户输入dd.MM.yyyy
,但用户输入了dd.MM.yy
。它只是表示为4位数年份的最后2位数。如果用户输入一个或三个数字作为年份,也会发生同样的情况。
如果您将 模式修改为dd.MM.yy
,您会发现它适用于dd.MM.yy
输入,正如您所期望的那样。
<s:convertDateTime type="date" pattern="dd.MM.yy"/>
然后11
的一年被解释为2011
,而不是1911
。看,没有Y2K问题。
如果你想同时允许这两种日期模式,我建议你创建一个能够正确完成工作的自定义转换器。您可以在我对这个问题的回答中找到一个启动示例:how to validate input date against multiple patterns?