下面的代码是一个 XPage 上的脚本对象,其中我循环遍历数据库中所有表单的数组,查找包含字段“ACIncludeForm”的所有表单。我的方法有效,但计算需要 2 到 3 秒,这确实减慢了 XPage 的负载。我的问题是 - 有没有更好的方法来实现这一点。我添加了代码来检查 sessionScope 变量是否为空,并且只在需要时执行,并且页面第二次加载它会在一秒钟内完成。所以我的方法确实消耗了大量的处理器时间。
var forms:Array = database.getForms();
var rtn = new Array;
for (i=0 ; i<forms.length; ++i){
var thisForm:NotesForm = forms[i];
var a = thisForm.getFields().indexOf("ACIncludeForm");
if (a >= 0){
if (!thisForm.isSubForm()) {
if (thisForm.getAliases()[0] == ""){
rtn.push(thisForm.getName() + "|" + thisForm.getName() );
}else{
rtn.push(thisForm.getName() + "|" + thisForm.getAliases()[0] );
}
}
}
thisForm.recycle()
}
sessionScope.put("ssAllFormNames",rtn)