我有一个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>
这不是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问题。
如果你想同时允许这两种日期模式,我建议你创建一个自定义转换器,它可以正确地完成任务。您可以在我对这个问题的回答中找到一个启动示例:如何根据多种模式验证输入日期?