diff -rc /win/tdk/src/java/org/apache/turbine/services/intake/model/Field.java /win/java/jakarta-turbine/src/java/org/apache/turbine/services/intake/model/Field.java
*** /win/tdk/src/java/org/apache/turbine/services/intake/model/Field.java	Sun Jun  3 21:42:48 2001
--- /win/java/jakarta-turbine/src/java/org/apache/turbine/services/intake/model/Field.java	Sat Jun  9 14:25:24 2001
***************
*** 84,89 ****
--- 84,90 ----
      // the following are set from the xml file and are permanent (final)
      protected final String name;
      protected final String key;
+     protected final String displayName;
      protected final String mapToObject;
      protected Validator validator;
      protected final Method getter;
***************
*** 137,142 ****
--- 138,144 ----
          this.group = group;
          key = field.getKey();
          name = field.getName();
+         displayName = field.getDisplayName();
          isMultiValued  = field.isMultiValued();
          String className = field.getValidator();
          if ( className == null && field.getRules().size() > 0 ) 
***************
*** 420,425 ****
--- 422,450 ----
      }
  
      /**
+      * Get the display name of the field. Useful for building
+      * data entry forms. Returns name of field if no display
+      * name has been assigned to the field by xml input file
+      *
+      * @return a <code>String</code> value
+      */
+     public String getDisplayName()
+     {
+         return (displayName == null) ? name : displayName;
+     }
+ 
+     /**
+      * Set the display name of the field. Display names are
+      * used in building data entry forms and serve as a 
+      * user friendly description of the data contained in
+      * the field.
+      */
+     public void setDisplayName(String newDisplayName)
+     {
+         this.displayName = newDisplayName;
+     }
+ 
+     /**
       * Get any error message resulting from invalid input.
       *
       * @return a <code>String</code> value
***************
*** 486,491 ****
--- 511,521 ----
                  try
                  {
                      validator.assertValidity(s);
+ 
+                     if ( set_flag ) 
+                     {
+                         doSetValue(pp);
+                     }                    
                  }
                  catch (ValidationException ve)
                  {
***************
*** 510,520 ****
          }
          */
  
-         if ( set_flag ) 
-         {
-             doSetValue(pp);
-         }
-         
          return valid_flag;
      }
  
--- 540,545 ----
diff -rc /win/tdk/src/java/org/apache/turbine/services/intake/model/Group.java /win/java/jakarta-turbine/src/java/org/apache/turbine/services/intake/model/Group.java
*** /win/tdk/src/java/org/apache/turbine/services/intake/model/Group.java	Sun Jun  3 21:42:50 2001
--- /win/java/jakarta-turbine/src/java/org/apache/turbine/services/intake/model/Group.java	Sat Jun  9 14:21:24 2001
***************
*** 371,376 ****
--- 371,400 ----
      }
  
      /**
+      * Calls getter methods on objects that are known to Intake
+      * so that field values in forms can be initialized from 
+      * the values contained in the intake tool.
+      */
+     public void getProperties(Object obj)
+         throws Exception
+     {
+         Class cls = obj.getClass();
+         while (cls != null)
+         {
+             Field[] flds = (Field[])mapToObjectFields.get(cls.getName());
+             if( flds != null )
+             {
+                 for (int i=flds.length-1; i>=0; i--)
+                 {
+                     flds[i].getProperty(obj);
+                 }
+             }
+ 
+             cls = cls.getSuperclass();
+         }
+     }
+ 
+     /**
       * Removes references to this group and its fields from the 
       * query parameters
       */
diff -rc /win/tdk/src/java/org/apache/turbine/services/intake/xmlmodel/XmlField.java /win/java/jakarta-turbine/src/java/org/apache/turbine/services/intake/xmlmodel/XmlField.java
*** /win/tdk/src/java/org/apache/turbine/services/intake/xmlmodel/XmlField.java	Sun Jun  3 21:42:56 2001
--- /win/java/jakarta-turbine/src/java/org/apache/turbine/services/intake/xmlmodel/XmlField.java	Fri Jun  8 13:53:46 2001
***************
*** 78,83 ****
--- 78,84 ----
      private String name;
      private String key;
      private String type;
+     private String displayName;
      private String onError;
      private String multiValued;
      private XmlGroup parent;
***************
*** 170,175 ****
--- 171,177 ----
          setName(attrib.getValue("name"));
          key = attrib.getValue("key");
          type = attrib.getValue("type");
+         displayName = attrib.getValue("displayName");
          //setOnError(attrib.getValue("onError"));
          setMultiValued(attrib.getValue("multiValued"));
  
***************
*** 213,218 ****
--- 215,236 ----
      }
  
      /**
+      * Get the display name of the property
+      */
+     public String getDisplayName()
+     {
+         return displayName;
+     }
+ 
+     /**
+      * Set the display name of the property
+      */
+     public void setDisplayName(String newDisplayName)
+     {
+         displayName = newDisplayName;
+     }
+ 
+     /**
       * Set the parameter key of the property
       */
      public void setKey(String newKey)
***************
*** 486,491 ****
--- 504,513 ----
          result.append(" key=\""+key+"\"");
          result.append(" type=\""+type+"\"");
  
+         if (displayName != null)
+         {
+             result.append(" displayName=\""+displayName+"\"");
+         }
          if (onError != null)
          {
              result.append(" onError=\""+onError+"\"");
