Xpages 用表单别名填充组合框

Xpages 用表单别名填充组合框,xpages,xpages-ssjs,Xpages,Xpages Ssjs,我试图用表单别名列表填充组合框,我可以用表单名称列表填充组合框,但无法使别名正常工作。我在组合框的值中有这个代码 var forms = database.getForms().iterator(); var tNames = new Array; var cnt = 0; while (forms.hasNext()){ var form:NotesForm = forms.next(); var temp = form.getAliases(); if (temp !

我试图用表单别名列表填充组合框,我可以用表单名称列表填充组合框,但无法使别名正常工作。我在组合框的值中有这个代码

var forms = database.getForms().iterator();
var tNames = new Array;
var cnt = 0;
while (forms.hasNext()){
    var form:NotesForm = forms.next();
    var temp = form.getAliases();
    if (temp != "" && temp != null) {
        tNames[cnt++] = temp;
    }
}
form.recycle();
return tNames.sort();

如果我第一次通过中断它并返回值temp,我会得到一个正确的别名值,但是,如果我让它一直运行,则在加载页面时会出现意外错误。我尝试了几种不同的方法来构建数组tNames,但似乎都不起作用。

一个表单可以有多个别名。因此语句
form.getAlias()
返回一个向量。如果只运行一次循环,那么变量
tNames
只包含组合框接受的
java.util.Vector
类的单个值。但是当您让它在所有值中运行时,变量
tNames
将变成
java.util.Vector
的数组,这是组合框不可接受的

请尝试以下代码:

var forms = database.getForms().iterator();
var tNames = new Array();
var cnt = 0;
while (forms.hasNext()){
    var form:NotesForm = forms.next();
    var temp = form.getAliases().toArray();
    tNames = tNames.concat(temp);
    form.recycle();
}
return tNames;

一个表单可以有多个别名。因此语句
form.getAlias()
返回一个向量。如果只运行一次循环,那么变量
tNames
只包含组合框接受的
java.util.Vector
类的单个值。但是当您让它在所有值中运行时,变量
tNames
将变成
java.util.Vector
的数组,这是组合框不可接受的

请尝试以下代码:

var forms = database.getForms().iterator();
var tNames = new Array();
var cnt = 0;
while (forms.hasNext()){
    var form:NotesForm = forms.next();
    var temp = form.getAliases().toArray();
    tNames = tNames.concat(temp);
    form.recycle();
}
return tNames;

您应该使用下面的图案Naveen轮廓。但您列出的代码引发错误的原因是,对
form.recycle()
的调用不在
while
循环的范围内。Naveen正确地将其移动到循环中,您也应该这样做。:)注意:停止使用
new Array()
:您应该使用下面的模式导航轮廓。但您列出的代码引发错误的原因是,对
form.recycle()
的调用不在
while
循环的范围内。Naveen正确地将其移动到循环中,您也应该这样做。:)另外,停止使用
新数组()
:对于大多数事情,答案通常很简单。所以非常感谢。和大多数事情一样,答案通常很简单。非常感谢。