myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yee-wah Lee <yee-wah....@oracle.com>
Subject Re: [jira] Updated: (TRINIDAD-873) JavaScriptError in Core.js _formatErrorString
Date Fri, 04 Apr 2008 22:02:45 GMT
Hi all,

I would like to modify the code slightly from this patch. Basically, 
move the check for typeof down, so that it only affects the code which 
does String.replace(). For details, see TRINIDAD-1036.

I didn't see a test scenario for TRINIDAD-873, so if anyone familiar 
with the above can i) email me their test case or ii) verify the 
proposed changes, please let me know.

Thanks,
Yee-Wah
====================================
Original:
function _formatErrorString()
{
..
  for (var currToken in tokens)
  {
    var currValue = tokens[currToken];

    // if the token has no value, replace it with the empty string
    if (!currValue)
    {
      currValue = "";
    }

    // TRINIDAD-829:
    // we replace '{' and '}' to ensure, that tokens containing values
    // like {3} aren't parsed more than once...
    currValue = currValue.replace("{","{'");
    currValue = currValue.replace("}","'}");
}
-------------------------------------------------
With TRINIDAD-873 patch:
function _formatErrorString( )
{
   ..
  for (var currToken in tokens)
  {
    var currValue = tokens[currToken];

+    // if the token has no value
+    // or !typeof string, replace it with the empty string (see 
TRINIDAD-873)
+    if (!currValue || !(typeof currValue == "string"))
    {
      currValue = "";
    }

    // TRINIDAD-829:
    // we replace '{' and '}' to ensure, that tokens containing values
    // like {3} aren't parsed more than once...
    currValue = currValue.replace("{","{'");
    currValue = currValue.replace("}","'}");
}
-------------------------------------------------
With TRINIDAD-1036 patch:
function _formatErrorString( )
{
   ..
  for (var currToken in tokens)
  {
    var currValue = tokens[currToken];

    // if the token has no value
+    if (!currValue)
    {
       currValue = "";
    }

    // TRINIDAD-829:
    // we replace '{' and '}' to ensure, that tokens containing values
    // like {3} aren't parsed more than once...
+    // Only do this if it is typeof string (see TRINIDAD-873)
+    if (typeof currValue == "string")
+    {
        currValue = currValue.replace("{","{'");
        currValue = currValue.replace("}","'}");
+    }



Matthias Weßendorf (JIRA) wrote:
>      [ https://issues.apache.org/jira/browse/TRINIDAD-873?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
>
> Matthias Weßendorf updated TRINIDAD-873:
> ----------------------------------------
>
>        Resolution: Fixed
>     Fix Version/s: 1.2.5-core
>                    1.0.5-core
>            Status: Resolved  (was: Patch Available)
>
> applied the patch to both trunks;
>
>   
>> JavaScriptError in Core.js _formatErrorString
>> ---------------------------------------------
>>
>>                 Key: TRINIDAD-873
>>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-873
>>             Project: MyFaces Trinidad
>>          Issue Type: Bug
>>    Affects Versions: 1.0.5-core
>>            Reporter: Thomas Spiegl
>>            Assignee: Matthias Weßendorf
>>             Fix For: 1.0.5-core, 1.2.5-core
>>
>>         Attachments: Core.js.patch
>>
>>
>> currValue in defined in function _formatErrorString line 2807 may be a function (eg.
removeDuplicates)
>> currValue.replace will then cause a JavaScript error
>> adding a typeof fixes the problem
>>     // if the token has no value or !typeof string, replace it with the empty string
>>     if (!currValue || !(typeof currValue == "string"))
>>     {
>>       currValue = "";
>>     }
>>     
>
>   


Mime
View raw message