用于查看的Xpages ACL

时间:2014-09-24 18:50:05

标签: view xpages acl

有没有办法只在特定用户的视图中设置文档?我有一个namesPicker,它接受来自names.nsf数据库的所有用户,我想允许文档的创建者对文档进行保护。文档的创建者将选择names.nsf数据库中的哪些用户可以在视图中查看文档,然后将其打开。有没有办法做到这一点?

我在想,使用namesPicker,我只得到用户名的字符串值,然后如何为那些特定用户提供受保护的文档呢?

我已经创建了该文档,唯一缺少的是这个保护问题,我认为这不容易实现。

1 个答案:

答案 0 :(得分:4)

使用setReaders(true)作为文档项目

var doc = document1.getDocument(true);
var item:NotesItem = doc.replaceItemValue("Readers", namesPickerValue);
item.setReaders(true);

这会为您的商品提供“读者”属性。只允许此字段中列出的人员或组阅读该文档。

namesPickerValue可以是String或字符串数​​组或Vector或List。确保名称在规范上类似于“ CN = Knut Herrmann / O = Leonso ”或者像“ Knut Herrmann ”这样的常用名称(不推荐)。格式“ Knut Herrmann / Leonso ”不起作用。

下面是一个示例代码,用于将字段“inputText1”中列出的名称转换为规范格式,并将读者项目作为reader字段写入:

var doc = document1.getDocument(true);
var value = getComponent("inputText1").getValue();
var array = [];
if (typeof value === "string") {
    var name = session.createName(value);
    array.push(name.getCanonical());
    name.recycle();
} else {
    var it:java.util.Iterator = value.iterator();
    while(it.hasNext()) {
        var name = session.createName(it.next());
        array.push(name.getCanonical());
        name.recycle();
    }               
}
var item:NotesItem = doc.replaceItemValue("Readers", array);
item.setReaders(true);