Commits

Anonymous committed 7d34bcd

Fixing type conversion issue: field errors were added when empty strings were passed in for basic types. XworkBasicConverter now checks for empty Strings and sets null without adding an error.

git-svn-id: http://svn.opensymphony.com/svn/xwork/trunk/src@69e221344d-f017-0410-9bd5-d282ab1896d7

Comments (0)

Files changed (1)

java/com/opensymphony/xwork/util/XWorkBasicConverter.java

  * @version $Revision$
  */
 public class XWorkBasicConverter extends DefaultTypeConverter {
+    //~ Static fields/initializers /////////////////////////////////////////////
+
+    private static final Object OK_NULL_RESULT = new Object();
+
     //~ Methods ////////////////////////////////////////////////////////////////
 
     public Object convertValue(Map context, Object o, Member member, String s, Object value, Class toType) {
         Object result = null;
 
+        //short circuit conversion for empty strings... these are not conversion errors
+        if ("".equals(value)) {
+            result = (String.class.equals(toType)) ? "" : OK_NULL_RESULT;
+
+            return result;
+        }
+
         if (toType == String.class) {
             result = doConvertToString(context, value);
         } else if (toType == boolean.class) {
             throw new TypeConversionException("Unable to convert value '" + value + "' to type " + toType.getName());
         }
 
+        if (result == OK_NULL_RESULT) {
+            return null;
+        }
+
         return result;
     }
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.