You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Johan Compagner (JIRA)" <ji...@apache.org> on 2007/11/14 13:40:43 UTC

[jira] Commented: (WICKET-1153) Validation with AbstractFormValidator doesn't work if there are DateTimeFields

    [ https://issues.apache.org/jira/browse/WICKET-1153?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12542438 ] 

Johan Compagner commented on WICKET-1153:
-----------------------------------------

but are those 2 date formcomponents valid and visible?
If there aren't then yes the validate isn't called. Because for the validator to do its job it first checks if the dependend  components are visible and valid.
So is that somehow not the case?

> Validation with AbstractFormValidator doesn't work if there are DateTimeFields
> ------------------------------------------------------------------------------
>
>                 Key: WICKET-1153
>                 URL: https://issues.apache.org/jira/browse/WICKET-1153
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-datetime
>    Affects Versions: 1.3.0-beta4
>            Reporter: Roberto Fasciolo
>             Fix For: 1.3.0-rc2
>
>
> If in dependentFormComponents of a class extending AbstractFormValidator there are some DateTimeFields the validator code is never called. Example:
> public final class DateRangeValidator extends AbstractFormValidator {
>     private final transient Logger logger = Logger.getLogger(this.getClass().getName());
>     private final DateTimeField dateFrom;
>     private final DateTimeField dateTo;
>     public DateRangeValidator(final DateTimeField dateFrom, final DateTimeField dateTo) {
>         if (dateFrom == null) {
>             throw new NullPointerException("From date field cannot be null");
>         }
>         if (dateTo == null) {
>             throw new NullPointerException("From date field cannot be null");
>         }
>         this.dateFrom = dateFrom;
>         this.dateTo = dateTo;
>         if (this.logger.isDebugEnabled()) {
>             this.logger.debug("Validator constructed");
>         }
>     }
>     @Override
>     public FormComponent[] getDependentFormComponents() {
>         // TODO this should return an array with the 2 objects, but if returning that the
>         // validator doesn't work at all.
>         // return new FormComponent[] { dateFrom, dateTo };
>         return null;
>     }
>     @Override
>     public void validate(final Form form) {
>         Date from = (Date) this.dateFrom.getConvertedInput();
>         Date to = (Date) this.dateTo.getConvertedInput();
>         if (this.logger.isDebugEnabled()) {
>             this.logger.debug("Date from: '" + from + "'");
>             this.logger.debug("Date to: '" + to + "'");
>         }
>         if (from == null || to == null) {
>             return;
>         }
>         if (to.compareTo(from) <= 0) {
>             error(this.dateTo);
>         }
>     }
> }
> If that class returns the FormComponent[] with the 2 DateTimeFields validate is never called, if that method returns null validate is called.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.