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);
    }
}

Reply via email to