0

我在 XPage 上有一个名称选择器,带有 dataProvider dominoNABNamePicker,addressBookSel = all-public 和 people and groups = true。使用 Notes 客户端的 Domino 服务器上的数据库会显示我的本地 Names.nsf。如果我在 brouse 中打开数据库,它会从服务器中选择正确的 names.nsf。无法确定这是否是我的客户端、服务器或 XPage 中设置的结果。在两台不同的PC上做同样的事情。我认为全公众会强迫它只开放公共 NAB,但事实并非如此。

4

3 回答 3

0

这就是我最终所做的。我对通讯簿的最大数量(不是很好,但它有效)设置了 4 个限制,您可以创建任意数量的地址簿。因此,我创建了几个 sessionScope 变量,它们是在 XPage 上的页面加载后事件中创建的。我用了这个公式。

var allNABs:Array = session.getAddressBooks().iterator();
var pubNABs = new Array;
var privNABs = new Array;
while (allNABs.hasNext()) {
    var db:NotesDatabase = allNABs.next();
    if (db.isPublicAddressBook()){
        pubNABs.push(db.getFilePath())
    } else {
        privNABs.push(db.getFilePath())
    }
    db.recycle()
}
sessionScope.put("ssPublicNABs", pubNABs);
sessionScope.put("ssPrivateNABs", privNABs);

因为我在同一页面上使用了几个不同的名称选择器,所以我不想重复循环浏览地址簿。然后我创建了 4 个 NamePicker 控件,并为每个连续的控件添加了 1、2、3 和 4 个 dominoNABNamePickers 提供程序。然后根据公共地址簿的数量设置呈现的属性,这样它们就不会炸毁我。每个提供者的 db name 属性是:

var server:String = @Name("[CN]",session.getCurrentDatabase().getServer());
var pubNABs:Array = sessionScope.get("ssPublicNABs");
    return server + "!!" + pubNABs[0];

其中 pubNABs[n] 返回 NAB 的正确文件路径。它在 Notes 客户端和 Web 中运行良好。然后为了使它不会在本地断开连接的副本上爆炸,我创建了另外 4 个控件并做了同样的事情,但使用了具有适当渲染属性的 privNAB,这样就不会发生冲突。似乎还有很长的路要走,我相信有一种更简单的方法,但它确实有效。

于 2013-09-04T22:05:58.617 回答
0

我自己也问过同样的问题。

答案,在控件中添加 addressBookDb="SERVER!!names.nsf"

从这里。

我可以让在 xPINC 中运行的 extlib 名称选择器查找服务器上的目录吗?

于 2013-09-04T03:36:08.033 回答
0

经过一番挫折后,我为 Notes 客户端和 Web 客户端工作。也许这对你们大多数人来说是显而易见的,但对我来说肯定不是。首先在名称选择器上,我创建了一个 namePickerAggregator。然后我在 addressBookDb 中添加了一个 dominoNABNamePicker 我把下面的 SSJS:

var server:String = @Name("[CN]",session.getCurrentDatabase().getServer());
var allNABs:Array = session.getAddressBooks().iterator();
var pubNABs = new Array;
var privNABs = new Array;
while (allNABs.hasNext()) {
    var db:NotesDatabase = allNABs.next();
    if (db.isPublicAddressBook()){
        pubNABs.push(db.getFileName())
    } else {
        privNABs.push(db.getFileName())
    }
    db.recycle()
}


   if (pubNABs[0] == ""){
    return privNames[0];
    break;
} else {
    return server + "!!" + pubNABs[0];
    break
}

然后我添加了第二个 dominoNABNamePicker 具有相同的代码块,除了返回是

if (pubNABs[1] != "") {
    return server + "!!" + pubNABs[1];
    break;
} else {
    return "";
}

此代码适用于 Notes 客户端和 Web 客户端,因此我现在是一个快乐的露营者,除非我在某个地方找到了陷阱。

于 2013-09-04T19:16:39.800 回答