You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2009/07/22 09:38:26 UTC

svn commit: r796625 - /myfaces/trinidad/branches/1.2.11.4-branch/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/NumberFormat.js

Author: matzew
Date: Wed Jul 22 07:38:25 2009
New Revision: 796625

URL: http://svn.apache.org/viewvc?rev=796625&view=rev
Log:
TRINIDAD-1537 - client convertNumber truncates invalid number instead of throwing exception

Thanks to Cale Scholl for his patch

Modified:
    myfaces/trinidad/branches/1.2.11.4-branch/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/NumberFormat.js

Modified: myfaces/trinidad/branches/1.2.11.4-branch/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/NumberFormat.js
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.11.4-branch/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/NumberFormat.js?rev=796625&r1=796624&r2=796625&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.11.4-branch/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/NumberFormat.js (original)
+++ myfaces/trinidad/branches/1.2.11.4-branch/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/NumberFormat.js Wed Jul 22 07:38:25 2009
@@ -250,12 +250,13 @@
  */
 TrNumberFormat.prototype.stringToNumber = function(numberString)
 {
-  numberString = parseFloat(numberString);
-  if(isNaN(numberString))
+  // parseFloat("123abc45") returns 123, but 123abc45 is considered an invalid number on the server, 
+  // so check for a valid number first. Exclude non-numbers and disallow exponential notation.
+  if (isNaN(numberString) || numberString.indexOf('e') != -1 || numberString.indexOf('E') != -1)
   {
     throw new TrParseException("not able to parse number");
   }
-  return numberString;
+  return parseFloat(numberString);
 }
 
 /**
@@ -276,7 +277,7 @@
     if(negS != -1)
     {
       numberString = numberString.substr(0, numberString.length - nSufNoSpace.length);
-      return (parseFloat(numberString)*-1);
+      return (stringToNumber(numberString) * -1);
     }
     else
     {
@@ -296,7 +297,7 @@
       if(posS != -1)
       {
         numberString = numberString.substr(0, numberString.length - pSufNoSpace.length);
-        numberString = parseFloat(numberString);
+        numberString = stringToNumber(numberString);
       }
       else
       {
@@ -317,13 +318,13 @@
 TrNumberFormat.prototype.stringToPercentage = function(percentString)
 {
   var isPercentage = (percentString.indexOf('%') != -1);
-  var numberString = percentString.replace(/\%/g, '');
-  numberString = parseFloat(numberString);
-  if(!isPercentage || isNaN(numberString))
+  if (!isPercentage)
   {
     throw new TrParseException("not able to parse number");
   }
-  return numberString;
+  
+  var numberString = percentString.replace(/\%/g, '');
+  return stringToNumber(numberString);
 }
 
 /**