我在选项卡式面板中有一个视图面板,其中包含数据> 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上单击该选项卡都可以正常工作。
视图中显示的文档没什么特别之处。我比较了其中两个 - 一个显示,一个抛出错误,我找不到任何会导致此问题的差异。
我无法确定为什么有时会出现错误,有时也不会。
任何帮助都会很棒!
答案 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我认为是......