From: Joonas Lehtinen Date: Thu, 3 Jul 2008 13:56:00 +0000 (+0000) Subject: Corrections for #1867 X-Git-Tag: 6.7.0.beta1~4490 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=f091fa9e0c55be3e92b5920ba3d6b7135124435b;p=vaadin-framework.git Corrections for #1867 svn changeset:5033/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/ui/AbstractComponent.java b/src/com/itmill/toolkit/ui/AbstractComponent.java index a4e662aa64..f4db9214ed 100644 --- a/src/com/itmill/toolkit/ui/AbstractComponent.java +++ b/src/com/itmill/toolkit/ui/AbstractComponent.java @@ -13,10 +13,8 @@ import java.util.Locale; import java.util.Map; import com.itmill.toolkit.Application; -import com.itmill.toolkit.data.Validator.EmptyValueException; import com.itmill.toolkit.event.EventRouter; import com.itmill.toolkit.event.MethodEventSource; -import com.itmill.toolkit.terminal.CompositeErrorMessage; import com.itmill.toolkit.terminal.ErrorMessage; import com.itmill.toolkit.terminal.PaintException; import com.itmill.toolkit.terminal.PaintTarget; @@ -626,12 +624,7 @@ public abstract class AbstractComponent implements Component, MethodEventSource final ErrorMessage error = getErrorMessage(); if (error != null) { - // Do not display empty value errors for - // empty required fields. - if (!(error instanceof EmptyValueException || - (error instanceof CompositeErrorMessage && - ((CompositeErrorMessage)error).hasErrorMessageClass(EmptyValueException.class)))) - error.paint(target); + error.paint(target); } } else { target.addAttribute("invisible", true); diff --git a/src/com/itmill/toolkit/ui/Form.java b/src/com/itmill/toolkit/ui/Form.java index 266aa780d4..a4d81a1b09 100644 --- a/src/com/itmill/toolkit/ui/Form.java +++ b/src/com/itmill/toolkit/ui/Form.java @@ -15,7 +15,6 @@ import com.itmill.toolkit.data.Item; import com.itmill.toolkit.data.Property; import com.itmill.toolkit.data.Validatable; import com.itmill.toolkit.data.Validator; -import com.itmill.toolkit.data.Validator.EmptyValueException; import com.itmill.toolkit.data.Validator.InvalidValueException; import com.itmill.toolkit.data.util.BeanItem; import com.itmill.toolkit.terminal.CompositeErrorMessage; @@ -171,17 +170,6 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item, if (formFooter != null) { formFooter.paint(target); } - - // AbstractComponent.paint() does not paint EmptyValueExceptions and - // filters them out, but Form wants to paint them, so we have to - // see if the error was skipped. - // Efficiency note: also AbstractComponent.paint() calls - // getErrorMessage(), which is a bit heavy call. - final ErrorMessage error = getErrorMessage(); - if (error instanceof EmptyValueException || - (error instanceof CompositeErrorMessage && - ((CompositeErrorMessage)error).hasErrorMessageClass(EmptyValueException.class))) - error.paint(target); } /** @@ -195,27 +183,28 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item, * validation fails also on empty errors. */ public ErrorMessage getErrorMessage() { + // Reimplement the checking of validation error by using // getErrorMessage() recursively instead of validate(). ErrorMessage validationError = null; - for (final Iterator i = propertyIds.iterator(); i.hasNext();) { - try { - AbstractComponent field = (AbstractComponent) fields.get(i - .next()); - validationError = field.getErrorMessage(); - if (validationError != null) { - // Skip empty errors - if (validationError.toString().isEmpty()) - continue; - break; + if (isValidationVisible()) { + for (final Iterator i = propertyIds.iterator(); i.hasNext();) { + try { + AbstractComponent field = (AbstractComponent) fields.get(i + .next()); + validationError = field.getErrorMessage(); + if (validationError != null) { + // Skip empty errors + if ("".equals(validationError.toString())) { + continue; + } + break; + } + } catch (ClassCastException ignored) { } - } catch (ClassCastException ignored) { } } - - // The rest is reimplementation of the latter part of - // AbstractField.getErrorMessage() - + // Check if there are any systems errors final ErrorMessage superError = super.getErrorMessage();