2017-04-12 62 views
3

我有一个会话变量使用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(); 
} 
+3

请问您可以提供会话转储截图吗? – cfprabhu

+0

Plz运行此? – cfprabhu

+1

(编辑)是的,首先通过转储会话作用域(以及'emp_nextid_#app()。getCurrentAgentID()#_#officeID#')的值来验证A)动态变量名称实际上是否正确B)一个变量这个名字确实存在。鉴于动态参考,有可能参考关闭/不正确。 – Leigh

回答

1

呼叫,应用程序()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

谢谢你的答案..现在我试图使用这个代码,迄今为止它很好.. :) –

相关问题