我可以在 Coldfusion 会话变量中存储结构吗?

dto*_*one 1 coldfusion session data-structures

我正在将结构传递给 CF 自定义标记。我希望这个自定义标记的 CFM 页面将此结构分配给动态创建的会话变量。创建会话变量在将其分配给一个简单的值(例如数字)时有效,但在以我在下面执行的方式将其分配给结构时失败。

<cfset Evaluate("SESSION.myVar#ATTRIBUTES.count# = #ATTRIBUTES.myStruct#")>
Run Code Online (Sandbox Code Playgroud)

我认为这是可能的,但是当我尝试这样做时,我收到一个错误: 复杂对象类型无法转换为简单值。

这是结构体的创建方式:

<cfset testStruct = StructNew()>
<cfset testStruct.something = 2>
Run Code Online (Sandbox Code Playgroud)

并通过自定义标签:

<cf_myTag myStruct="#testStruct#" count="#i#">
Run Code Online (Sandbox Code Playgroud)

我认为评估部分在这里搞砸了。

CfS*_*ity 5

正如 Leigh 所说,使用数组表示法而不是 Evaluate() 来创建动态命名的会话变量:

<cfset SESSION[ "myVar" & ATTRIBUTES.count ] = ATTRIBUTES.myStruct>
Run Code Online (Sandbox Code Playgroud)