问题描述
我从这个发现开始;
<cfscript>
app = application.getApplicationSettings().name;
sessionCollection = application.sessionTracker.getSessionCollection(app);
</cfscript>
,然后尝试遍历集合;
<cfloop collection="#sessionCollection#" item="i">
#StructFind(i,'CurrentAction')#
</cfloop>
失败; 您试图取消引用类型为java.lang.String类型的标量变量作为具有成员的结构。
我尝试过
#CurrentAction[i]#
失败; 变量CURRENTACTION未定义。
当我知道一个事实存在时 (https://ibb.co/ZJwsKFS)
我也尝试过点符号。
目的是为一个用户标识ajax侦听器活动,并影响对另一个特定用户的操作作为响应。我的印象是我可以由sessionID最终用户发送操作。如果无法实现,请随时告诉我。
解决方法
所以这段代码:
<cfset x = {
a = 1,b = 2,c = 3
}>
<cfoutput>
<cfloop collection="#x#" item="i">
<li>#i#</li>
</cfloop>
</cfoutput>
输出以下内容:
- A
- B
- C
这意味着i
是collection
属性中定义的结构的键。您的代码试图在集合(结构)中找到一个键,但是您引用的是错误的变量。
要查找B
的值,请执行StructFind(x,"b")
。您也不需要cfloop
,只需要检查密钥是否存在,然后获取值即可。
<cfset someVariable = "">
<cfif structKeyExists(x,"b")>
<cfset someVariable = structFind(x,"b")>
</cfif>