You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2007/05/28 22:04:43 UTC

svn commit: r542311 - in /tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/valid: IValidationDelegate.java ValidationDelegate.java

Author: jkuhnert
Date: Mon May 28 13:04:42 2007
New Revision: 542311

URL: http://svn.apache.org/viewvc?view=rev&rev=542311
Log:
Fixes TAPESTRY-1313.  Now that IMarkupWriter supports appending attributes it is safe to write some default css class names out for fieldInvalid/fieldMissing classes since they get used on the client side validation anyways.

Modified:
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/valid/IValidationDelegate.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/valid/ValidationDelegate.java

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/valid/IValidationDelegate.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/valid/IValidationDelegate.java?view=diff&rev=542311&r1=542310&r2=542311
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/valid/IValidationDelegate.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/valid/IValidationDelegate.java Mon May 28 13:04:42 2007
@@ -14,15 +14,15 @@
 
 package org.apache.tapestry.valid;
 
-import java.io.Serializable;
-import java.util.List;
-
 import org.apache.tapestry.IMarkupWriter;
 import org.apache.tapestry.IRender;
 import org.apache.tapestry.IRequestCycle;
 import org.apache.tapestry.form.IFormComponent;
 import org.apache.tapestry.form.TextField;
 
+import java.io.Serializable;
+import java.util.List;
+
 /**
  * Interface used to track validation errors in forms and
  * {@link IFormComponent form element component}s (including
@@ -355,8 +355,7 @@
      * component.
      */
 
-    void writeLabelSuffix(IFormComponent component,
-            IMarkupWriter writer, IRequestCycle cycle);
+    void writeLabelSuffix(IFormComponent component, IMarkupWriter writer, IRequestCycle cycle);
 
     /**
      * Returns true if any form component has errors.

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/valid/ValidationDelegate.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/valid/ValidationDelegate.java?view=diff&rev=542311&r1=542310&r2=542311
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/valid/ValidationDelegate.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/valid/ValidationDelegate.java Mon May 28 13:04:42 2007
@@ -14,19 +14,14 @@
 
 package org.apache.tapestry.valid;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.tapestry.IMarkupWriter;
 import org.apache.tapestry.IRender;
 import org.apache.tapestry.IRequestCycle;
 import org.apache.tapestry.Tapestry;
 import org.apache.tapestry.form.IFormComponent;
 
+import java.util.*;
+
 /**
  * A base implementation of {@link IValidationDelegate} that can be used as a
  * managed bean. This class is often subclassed, typically to override
@@ -309,7 +304,7 @@
     }
 
     /**
-     * Does nothing. Override in a subclass to decoreate fields.
+     * Does nothing. Override in a subclass to decorate fields.
      */
 
     public void writePrefix(IMarkupWriter writer, IRequestCycle cycle,
@@ -318,15 +313,27 @@
     }
 
     /**
-     * Does nothing. Override in a subclass to decorate fields.
+     * Currently appends a single css class attribute of <code>fieldInvalid</code> if the field
+     * is in error.  If the field has a matching constraint of {@link ValidationConstraint#REQUIRED}
+     * the <code>fieldMissing</code> is written instead. 
      */
 
     public void writeAttributes(IMarkupWriter writer, IRequestCycle cycle,
             IFormComponent component, IValidator validator)
     {
-        if (isInError()) {
+        IFieldTracking tracking = getFieldTracking(component);
+        if (tracking == null)
+            return;
+
+        if (tracking.getConstraint() != null
+            && tracking.getConstraint() == ValidationConstraint.REQUIRED)
+        {
+            writer.appendAttribute("class", "fieldMissing");
+        } else if (tracking.isInError())
+        {
+
             writer.appendAttribute("class", "fieldInvalid");
-        }
+        }        
     }
 
     /**
@@ -362,7 +369,8 @@
 
     public IRender getFirstError()
     {
-        if (Tapestry.size(_trackings) == 0) return null;
+        if (Tapestry.size(_trackings) == 0)
+            return null;
 
         Iterator i = _trackings.iterator();
 
@@ -392,6 +400,13 @@
         IFieldTracking tracking = (IFieldTracking) _trackingMap.get(fieldName);
 
         return tracking != null && tracking.isInError();
+    }
+
+    protected IFieldTracking getFieldTracking(IFormComponent component)
+    {
+        String fieldName = component.getName();
+
+        return (IFieldTracking) _trackingMap.get(fieldName);
     }
 
     /**