2017-04-12 61 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

謝謝你的答案..現在我試圖使用這個代碼,迄今爲止它很好.. :) –

相關問題