2012-09-27 29 views
1

我有一個標籤面板中的數據> var屬性設置爲rowData的查看面板。我將這個視圖設置爲通過使用viewScope值來模仿Single Category視圖。查看面板無法找到數據var rowData - 未找到錯誤

當我打開的XPage並點擊該視圖面板存在的標籤上,有時這種錯誤彈出(在JavaScript代碼線2是其中,誤差是):


Unexpected runtime error 
The runtime has encountered an unexpected error. 

Error source 
Page Name:/speakerReq.xsp 
Control Id: viewColumn2 

Exception 
Error while executing JavaScript computed expression 
Script interpreter error, line=2, col=23: [ReferenceError] 'rowData' not found 

JavaScript的代碼

1: var href = facesContext.getExternalContext().getRequest().getContextPath(); 
**2: var docUNID = rowData.getDocument().getUniversalID();** 
3: var formName = rowData.getDocument().getItemValueString("Form"); 
4: var formType = rowData.getColumnValue("Form") 
5: 
6: if(formName == "clientProfile") { 
7: href + "/clientProfile.xsp?documentId=" + docUNID + "&action=openDocument&rtr=yes"; 
8: } 
9: else { 
10:  href + "/speakerProfile.xsp?documentId=" + docUNID + "&action=openDocument&rtr=yes"; 
11: } 

的viewColumn2是上面引用是在具有該式的視圖中的列:

@ReplaceSubstring(Form; "clientProfile" : "clientFeed" : "speakerProfile" : "speakerFeed"; "Client Profile" : "Client Feedback" : "Speaker Profile" : "Speaker Feedback") 

我不知道如何拋出上面的錯誤 - 點擊大多數XPage上的該選項卡工作正常。

在視圖中顯示的文檔沒有什麼特別的。我比較了其中兩個 - 一個顯示和一個引發錯誤,我找不到會導致此問題的任何差異。

我無法確定爲什麼有時會出現錯誤,有時候不會。

任何幫助將是偉大的!

回答

2

如果對視圖進行分類並且代碼碰到類別而不是文檔,則可能會出現此錯誤。您可以使用folllowing代碼,以確保當前行不是一個類別:

if (!rowdata.isCategory()) { 
// insert your code here 
} 

當然,此代碼假定rowData是一個可用,因此這可能不是解決您的問題。

示例代碼可以在Notes & Domino應用程序開發wiki上找到: http://www-10.lotus.com/ldd/ddwiki.nsf/dx/notesxspviewentry_sample_javascript_code_for_xpages#isCategory+isDocument+isTotal

+0

感謝您的想法 - 但是,我仍然收到「rowData not found」錯誤... 任何其他的想法將是偉大的! – Dan

3

嘗試使用不同的變量名curRowData ---不要忘記這些東西是區分大小寫的。此外,由於rowData.getDocument初始化您不回收的NotesDocument,因此您的代碼是一個很大的內存泄漏。

嘗試使用:

var result; 
if (curRowData.isCategory()) { 
    return ""; 
} 
var href = facesContext.getExternalContext().getRequest().getContextPath(); 
try { 
    var doc = curRowData.getDocument(); 
    if (doc != null) { 
     var docUNID = doc.getUniversalID(); 
     var formName = doc.getItemValueString("Form"); 
     var formType = curRowData.getColumnValue("Form") 
      if(formName == "clientProfile") { 
      result = href + "/clientProfile.xsp?documentId=" + docUNID + "&action=openDocument&rtr=yes"; 
     } else { 
     result = href + "/speakerProfile.xsp?documentId=" + docUNID + "&action=openDocument&rtr=yes"; 
     } 
    } 
} catch (e) { 
    // some error handling 
} 
if (doc != null) { 
    doc.recyle(); 
} 
return result; 

你當然會更好只添加你需要的視圖中的所有值。爲您節省創建NotesDocument對象的需求

0

請添加聲明控件的XML的描述。 我自己得到了這個錯誤,這是因爲我錯誤地計算了列; 「計算」vs JavaScript我認爲這是...