From c3a3b846459317f29b443a3d8be33f539d9fa78a Mon Sep 17 00:00:00 2001 From: Joonas Lehtinen Date: Fri, 24 Oct 2008 13:12:32 +0000 Subject: [PATCH] Fixes #2179 svn changeset:5715/svn branch:trunk --- src/com/itmill/toolkit/data/Validator.java | 20 ++++++++++++++++++++ src/com/itmill/toolkit/ui/AbstractField.java | 11 ++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/com/itmill/toolkit/data/Validator.java b/src/com/itmill/toolkit/data/Validator.java index 7f2de6ca13..3bbd75e3dc 100644 --- a/src/com/itmill/toolkit/data/Validator.java +++ b/src/com/itmill/toolkit/data/Validator.java @@ -95,9 +95,29 @@ public interface Validator { throw new NullPointerException( "Possible causes array must not be null"); } + this.causes = causes; } + /** + * See if the error message doesn't paint anything visible. + * + * @return True iff the paint method does not paint anything visible. + */ + public boolean isInvisible() { + if (getMessage() != null) { + return false; + } + if (causes != null) { + for (int i = 0; i < causes.length; i++) { + if (!causes[i].isInvisible()) { + return false; + } + } + } + return true; + } + public final int getErrorLevel() { return ErrorMessage.ERROR; } diff --git a/src/com/itmill/toolkit/ui/AbstractField.java b/src/com/itmill/toolkit/ui/AbstractField.java index fa1faecd0b..66eef1d6df 100644 --- a/src/com/itmill/toolkit/ui/AbstractField.java +++ b/src/com/itmill/toolkit/ui/AbstractField.java @@ -628,6 +628,10 @@ public abstract class AbstractField extends AbstractComponent implements Field, if (isEmpty()) { return false; } + } else { + if (isEmpty()) { + return true; + } } if (validators == null) { @@ -751,13 +755,14 @@ public abstract class AbstractField extends AbstractComponent implements Field, // Check validation errors only if automatic validation is enabled. // As an exception, no validation messages are shown for empty // required fields, as in those cases user is aware of the problem. + // Furthermore, non-required empty fields are obviously correct. ErrorMessage validationError = null; - if (isValidationVisible()) { + if (isValidationVisible() && !isEmpty()) { + try { validate(); } catch (Validator.InvalidValueException e) { - String msg = e.getMessage(); - if (msg != null && !"".equals(msg)) { + if (!e.isInvisible()) { validationError = e; } } -- 2.39.5