视图面板无法定位数据var rowData - 未找到错误

时间:2012-09-27 15:00:47

标签: xpages

我在选项卡式面板中有一个视图面板,其中包含数据> var属性设置为rowData。我将此视图设置为使用viewScope值模仿单个类别视图。

当我打开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上单击该选项卡都可以正常工作。

视图中显示的文档没什么特别之处。我比较了其中两个 - 一个显示,一个抛出错误,我找不到任何会导致此问题的差异。

我无法确定为什么有时会出现错误,有时也不会。

任何帮助都会很棒!

3 个答案:

答案 0 :(得分: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对象的需要

答案 1 :(得分:2)

如果对视图进行分类并且代码命中类别而不是文档,则可能会发生此错误。您可以使用以下代码确保当前行不是类别:

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

此代码当然假定rowData可用,因此这可能无法解决您的问题。

示例代码可以在Notes& Domino应用程序开发维基: http://www-10.lotus.com/ldd/ddwiki.nsf/dx/notesxspviewentry_sample_javascript_code_for_xpages#isCategory+isDocument+isTotal

答案 2 :(得分:0)

请添加声明控件的XML说明。 我自己得到了这个错误,这是因为我以错误的方式计算了列; “Computed”vs JavaScript我认为是......