You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Greg Woolsey (JIRA)" <ta...@jakarta.apache.org> on 2006/12/10 03:36:21 UTC
[jira] Commented: (TAPESTRY-904) DatePicker SimpleDateParser needs
"strict" parser
[ http://issues.apache.org/jira/browse/TAPESTRY-904?page=comments#action_12457158 ]
Greg Woolsey commented on TAPESTRY-904:
---------------------------------------
Here's what we've created in 4.1.1 for use in our app:
public class StrictDateTranslator extends DateTranslator {
public StrictDateTranslator() {
super();
}
public StrictDateTranslator(String initializer) {
super(initializer);
}
@Override
protected String defaultPattern()
{
return "MM/dd/yy";
}
@Override
protected String getMessageKey() {
"invalid-date";
}
@Override
protected String buildMessage(ValidationMessages messages, IFormComponent field, String key)
{
String label = field.getDisplayName();
Object[] parameters = getMessageParameters(messages.getLocale(), label);
return messages.formatValidationMessage(field.getMessages().getMessage(key), key, parameters);
}
@Override
public SimpleDateFormat getDateFormat(Locale locale) {
return new StrictDateFormat(getPattern(), new DateFormatSymbols(locale));
}
/**
* @see org.apache.tapestry.form.translator.AbstractTranslator#getMessageParameters(java.util.Locale,
* java.lang.String)
*/
@Override
protected Object[] getMessageParameters(Locale locale, String label)
{
String pattern = getDateFormat(locale).toLocalizedPattern().toUpperCase(locale);
pattern += "[YY]";
return new Object[]{ label, pattern };
}
Where StrictDateFormat validates that the entire input string is part of the parsed date:
public class StrictDateFormat extends SimpleDateFormat {
public StrictDateFormat(String pattern, DateFormatSymbols formatSymbols) {
super(pattern, formatSymbols);
setLenient(false);
}
@Override
public Object parseObject(String source) throws ParseException {
ParsePosition pos = new ParsePosition(0);
Object result = parseObject(source, pos);
if (pos.getIndex() != source.length()) {
throw new ParseException("Format.parseObject(String) failed", pos.getErrorIndex());
}
return result;
}
}
> DatePicker SimpleDateParser needs "strict" parser
> -------------------------------------------------
>
> Key: TAPESTRY-904
> URL: http://issues.apache.org/jira/browse/TAPESTRY-904
> Project: Tapestry
> Issue Type: Improvement
> Components: Framework
> Affects Versions: 4.1
> Reporter: phillip rhodes
> Assigned To: Jesse Kuhnert
> Priority: Minor
> Fix For: 4.1.1
>
>
> The datepicker is accepting dates such as 04/99/2005 The translator converts this to 07/08/2006 I looked at the code and it is using SimpleDateFormat() without a strict parser.
> Perhaps, the datepicker can accept an optional parameter that would control if the SimpleDateFormat is true/false?
> Thanks.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org