I ended up having to use a custom date pattern. I'm not saying wicket has to
be US-centric but this is such a common validation that most US customers
have included in their requirements.
public class StrictPatternDateConverter extends PatternDateConverter {
public static final String REGEX_PATTERN =
"^(\\d{1,2})/(\\d{1,2})/(\\d{4})$";
public StrictPatternDateConverter(String datePattern, boolean
applyTimeZoneDifference) {
super(datePattern, applyTimeZoneDifference);
}
@Override
public Object convertToObject(String value, Locale locale) {
final Pattern pattern = Pattern.compile(REGEX_PATTERN);
if (value != null && !pattern.matcher(value).matches()) {
throw new ConversionException("Invalid date format");
}
return super.convertToObject(value, locale);
}
}