提问人:James 提问时间:9/30/2023 最后编辑:Adrian J. MorenoJames 更新时间:9/30/2023 访问量:76
evaluate() 的 Coldfusion 替代方案,用于动态从查询中返回值
Coldfusion alternative to evaluate() to return a value from a query dynamically
问:
我被困在试图找出正确的符号以使用函数的 instad 时。让我试着解释一下:evaluate()
我有几个组件:,...等等,每个都有各自的功能。命名约定类似,例如在 tasks.cfc 中tasks.cfc
risks.cfc
我有方法,返回变量是同名的(),在我有等效的方法,它的retun变量是同名的()。每个返回变量都是一个具有以下键的结构:countAllFunctionInstanceTasks
countAllFunctionInstanceTasks
risks.cfc
countAllFunctionInstanceRisks
countAllFunctionInstanceRisks
totalRed
totalAmber
totalGreen
totalComplete
totalOpen
当我调用组件时,我会动态地执行以下操作:
<cfinvoke component="components.#session.myPermissions[i][j][k][l][m][n][o]["activityName"]#"
method="countAllFunctionInstance#session.myPermissions[i][j][k][l][m][n][o]["activityName"]#"
returnvariable="countAllFunctionInstance#session.myPermissions[i][j][k][l][m][n][o]["activityName"]#">
所要做的就是从一组嵌套结构中提取一个值,并将该值重新调整(将其保留在上面的示例中)“任务”或“风险”。[i][j][k][l][m][n][o]["activityName"]
该位工作正常,它按预期重新调整了 respecive 值,例如,如果我在哪里:
<cfoutput>#countAllFunctionInstanceTasks.totalOpen#</cfoutput>
我将从 tasks.cfc 和
<cfoutput>#countAllFunctionInstanceRisks.totalOpen#</cfoutput>
我将从 .risks.cfc
到目前为止一切顺利,但是......我需要动态获取这些值,但我正在努力获得正确的表示法来动态返回相应的值。所以我可以做这样的事情:
<p>countAllFunctionInstance#session.myPermissions[i][j][k][l][m][n][o]["activityName"]#.totalOpen</p>
这将返回字符串:
"countAllFunctionInstanceTasks.totalOpen"
"countAllFunctionInstanceRisks.totalOpen"
但我要做的是动态生成变量名称,该变量名称存在并已从相应的 cfc 重新调整。
到目前为止,我所能得到的就是:
<cfset totalOpen = "countAllFunctionInstance#session.myPermissions[i][j][k][l][m][n][o]["activityName"]#.totalOpen" />
<cfoutput>#evaluate(totalOpen)#</cfoutput>
我知道使用该函数不是好的做法,我试图找到一种替代符号,例如:evaluate()
#["countAllFunctionInstance" & session.myPermissions[i][j][k][l][m][n][o]["activityName"] & ".totalOpen"]#
我已经阅读了我可以找到的有关 evaluate() 替代品和数组表示法的其他帖子,但这些与我在这里的用例并不完全相同,经过几次尝试和内涵,没有任何效果,我完全被难住了!
谁能帮我?
谢谢
詹姆斯
答:
您调用的字符串:evaluate()
#["countAllFunctionInstance" & session.myPermissions[i][j][k][l][m][n][o]["activityName"] & ".totalOpen"]#
该变量应在请求范围内。因此,您应该能够像这样引用它:countAllFunctionInstance
variables
variables["countAllFunctionInstance" & session.myPermissions[i][j][k][l][m][n][o]["activityName"]].totalOpen
或
variables["countAllFunctionInstance" & session.myPermissions[i][j][k][l][m][n][o]["activityName"]]["totalOpen"]
或
x = variables["countAllFunctionInstance" & session.myPermissions[i][j][k][l][m][n][o]["activityName"]];
#x.totalOpen#
评论