Author: tim Date: Mon Nov 8 12:06:51 2004 New Revision: 56965 Modified: cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java Log: For Field widgets, make sure the old value that is sent in a value-changed event has been parsed and validated.
Modified: cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java ============================================================================== --- cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java (original) +++ cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java Mon Nov 8 12:06:51 2004 @@ -201,17 +201,18 @@ // Only convert if the text value actually changed. Otherwise, keep the old value // and/or the old validation error (allows to keep errors when clicking on actions) if (!(newEnteredValue == null ? "" : newEnteredValue).equals((enteredValue == null ? "" : enteredValue))) { + // Make sure the old value has been parsed and validated. + Object oldValue = getValue(); enteredValue = newEnteredValue; validationError = null; - Object oldValue = value; value = null; this.valueState = VALUE_UNPARSED; if (hasValueChangedListeners()) { - // Throw an event that will parse the value only if needed. - // This event holds the old value and will lazily compute the new one if needed + // Throw an event that will hold the old value and + // will lazily compute the new value only if needed. getForm().addWidgetEvent(new DeferredValueChangedEvent(this, oldValue)); - } + } } }