元素是类型类coldfusion.runtime.J2eeSessionScope的Java对象不确定
问题描述:
我有一个会话变量使用precisionEvaluate()的代码,但是当我调用该函数,有这样的错误:元素是类型类coldfusion.runtime.J2eeSessionScope的Java对象不确定
元emp_nextid_ANE_801未在类型为 的ColdFusion.runtime.J2eeSessionScope类型的Java对象中定义。
在代码中,有一个条件可以用structKeyExists()检查这个会话变量,但它仍然显示一个错误。有谁知道它为什么仍然错误?
下面是一些代码:
if(structKeyExists(session,'emp_nextid_#app().getCurrentAgentID()#_#officeID#')
AND val(session['emp_nextid_#app().getCurrentAgentID()#_#officeID#']) GT 0) {
var nextID = precisionEvaluate(session['emp_nextid_#app().getCurrentAgentID()#_#officeID#']);
var qData = new Query();
var sql = "SELECT 1 FROM Employee
WHERE pers_id = :nextid";
qData.addParam(name="nextid", value=nextID, cfsqltype="CF_SQL_BIGINT");
var result = qData.execute(sql=sql).getResult();
}
答
呼叫,应用程序()getCurrentAgentID(),可能会产生被动态变更值。无论如何,您可以将代码片段改进为:
var key = 'emp_nextid_' & app().getCurrentAgentID() & '_' & officeID;
if(structKeyExists(session,key) AND val(session[key]) GT 0) {
var nextID = precisionEvaluate(session[key]);
...
etc.
}
+0
谢谢你的答案..现在我试图使用这个代码,迄今为止它很好.. :) –
请问您可以提供会话转储截图吗? – cfprabhu
(编辑)是的,首先通过转储会话作用域(以及'emp_nextid_#app()。getCurrentAgentID()#_#officeID#')的值来验证A)动态变量名称实际上是否正确B)一个变量这个名字确实存在。鉴于动态参考,有可能参考关闭/不正确。 – Leigh