Wicket中DateTextField的严格日期模式

时间:2013-07-03 09:37:14

标签: wicket wicket-1.5 wicket-1.6 wicketstuff

我的应用程序中有一个DateTextField组件,我希望使用预定义的模式输入日期。我需要的模式是“yyyy-MM-dd”。我使用以下代码创建了DateTextField。

    DateTextField dtf_ExpiryDate = DateTextField.forDatePattern("ExpDate", "yyyy-MM-dd");
    dtf_ExpiryDate.add(new DatePicker());

它有助于防止大多数其他格式的日期输入。但它接受dd-MM-yyyy格式的输入并将其转换为某种奇怪的格式。例如, 12-06-2013 会自动转换为 0012-06-20

在dd-MM-yyyy中给出日期时有没有办法抛出错误?

DateTextField的Javadocs表示转换是使用Joda时间解析器在内部完成的。有没有办法添加更多约束?

我真的不希望将数据捕获为String并添加StringValidator以检查它是否使用Regex确认模式。

谢谢

2 个答案:

答案 0 :(得分:1)

据我所知,答案是否定的。 DateTextField在内部使用DatePattern或DateStyles,因此无法实施更严格的规则。如果您不想使用Javascript(自定义)或JQuery,则必须使用REGEX来验证输入。

看看here。使用下面显示的StrictPatternDateConverter类对输入强制执行严格验证。

答案 1 :(得分:0)

是的! StringRegExp是一个很好的解决方案。但另一种解决方案可能是使用jqWicket。它提供了一个MaskedInputBehavior。看看:http://code.google.com/p/jqwicket/wiki/MaskedInputExample