Hope the answer isn't already here, but I have looked at all the 
"attempted to dereference a scalar variable" messages and haven't found a 
solution.

Moved from CF 4.5 to CF MX7.  All of our code is written using the same 
methodology, using <cfif isdefined("url.testvalue")> to use values passed 
in the URL.  This code doesn't work on CF MX7 now.  Quick sample code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
<head>
</head>
<body>

<a href="?testvalue=27">testvalue</a><br />

<cfquery datasource="General_Info" name="ModUsers">
        Select top 5 * from GeneralPosting 
        where ag_num = '303'
</cfquery>

<cfoutput>
        <cfif isdefined("url.testvalue")>
                isdefined("url.testvalue")=#url.testvalue#<br />
        <cfelse>
                isdefined returned false for (url.testvalue)<br />
        </cfif>

        <cfif StructKeyExists(url,"testvalue")>
                StructKeyExists(url,"testvalue")=#url.testvalue#<br />
        <cfelse>
                StructKeyExists(url,"testvalue") is false<br />
        </cfif>
</cfoutput>

Begin cfoutput loop (cfoutput query="modusers"):<br />
<cfoutput query="modusers">

        <cfif isdefined("url.testvalue")>
                testvalue=#url.testvalue#<br />
        <cfelse>
                isdefined returned false for (url.testvalue)<br />
        </cfif>
</cfoutput>

outside the loop:<br />

<cfoutput>
        <cfif StructKeyExists(url,"testvalue")>
                StructKeyExists(url,"testvalue")=#url.testvalue#<br />
        <cfelse>
                StructKeyExists(url,"testvalue") is false<br />
        </cfif>
</cfoutput>

Begin cfoutput loop (cfoutput query="modusers"):<br />
<cfoutput query="modusers">

        <cfif isdefined("url.testvalue")>
                testvalue=#url.testvalue#<br />
        <cfelse>
                isdefined returned false for (url.testvalue)<br />
        </cfif>
        <cfif StructKeyExists(url,"testvalue")>
                StructKeyExists(url,"testvalue")=#url.testvalue#<br />
        <cfelse>
                StructKeyExists(url,"testvalue") is false<br />
        </cfif>
</cfoutput>

outside the loop:<br />

<cfoutput>
        <cfif StructKeyExists(url,"testvalue")>
                StructKeyExists(url,"testvalue")=#url.testvalue#<br />
        <cfelse>
                StructKeyExists(url,"testvalue") is false<br />
        </cfif>
</cfoutput>

</body>
</html>

Output with ?testvalue=27 :

testvalue
isdefined("url.testvalue")=27
StructKeyExists(url,"testvalue")=27
Begin cfoutput loop (cfoutput query="modusers"):
isdefined returned false for (url.testvalue)
isdefined returned false for (url.testvalue)
isdefined returned false for (url.testvalue)
isdefined returned false for (url.testvalue)
isdefined returned false for (url.testvalue)
outside the loop:
StructKeyExists(url,"testvalue")=27
Begin cfoutput loop (cfoutput query="modusers"):
isdefined returned false for (url.testvalue)

You have attempted to dereference a scalar variable of type class 
java.lang.String as a structure with members.

Error occurred in line 57:
55 :            isdefined returned false for (url.testvalue)<br />
56 :    </cfif>
57 :    <cfif StructKeyExists(url,"testvalue")>
58 :            StructKeyExists(url,"testvalue")=#url.testvalue#<br />
59 :    <cfelse>


The docs for isdefined say:

When working with scopes that ColdFusion exposes as structures, the 
StructKeyExists function can sometimes replace this function. The 
following lines are equivalent: 

if(isDefined("form.myVariable"))
if(structKeyExists(form,"myVariable"))

so I added the structKeyExists test in addition to the isdefined, and get 
the dreaded "You have attempted to dereference a scalar variable of type 
class java.lang.String as a structure with members." error.

At the top of the script, URL is obviously a structure, but within the 
<cfoutput query="modusers"> loop something happens to turn it into a 
string.

What the heck is going on here?  We really need a solution for this, as we 
need to deploy a new server with CF MX7 on it and this appMUST work.


Bill Woodland, Programmer V
Texas Building and Procurement Commission
Phone: 512-936-2901  Fax: 512-236-6166  Email: 
[EMAIL PROTECTED]


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Message: http://www.houseoffusion.com/lists.cfm/link=i:4:244902
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54

Reply via email to