Xpages setCanDeleteDocuments()Lotus Notes ACL

Xpages setCanDeleteDocuments()Lotus Notes ACL,xpages,lotus-notes,acl,Xpages,Lotus Notes,Acl,我正在尝试删除文档,其中条件是 用户在组中且具有删除权限的位置&组中的每个用户都可以删除文档 但问题是,如果我指定的名称也在ACL中明确列出,并且没有删除权限,那么它就不会检查组权限,这是足够公平的 为此,我试图通过下面给出的代码将删除权限授予分组中的用户 var acl:NotesACL=database.getACL(); var entry:NotesACLEntry=acl.getFirstEntry(); if(entry!=null) { var user:NotesACLEntry

我正在尝试删除文档,其中条件是

用户在组中且具有删除权限的位置&组中的每个用户都可以删除文档

但问题是,如果我指定的名称也在ACL中明确列出,并且没有删除权限,那么它就不会检查组权限,这是足够公平的

为此,我试图通过下面给出的代码将删除权限授予分组中的用户

var acl:NotesACL=database.getACL();
var entry:NotesACLEntry=acl.getFirstEntry();
if(entry!=null)
{
var user:NotesACLEntry=acl.getEntry(@UserName());
if(user.isCanDeleteDocuments()==false)
{
user.setCanDeleteDocuments(true);
acl.save();
}
}
显示错误的地方,比如, 调用方法NotesACL.save()null时发生异常

即使是显式添加的用户,ACL中的用户类型也为person&Access=Manager

还有别的办法吗

任何帮助都将不胜感激。
提前感谢。

使用
数据库作为起点意味着您将以用户的身份获取数据库。除非用户已经拥有对数据库的Manager访问权限,否则此操作将失败,因为用户没有更新ACL的权限


您可以使用
sessionAsSigner
,但请记住,您不能使用
getCurrentDatabase()
方法。相反,您必须使用
getDatabase(server,filePath)
方法才能获得具有签名者权限的数据库。显然,签名者还需要修改ACL的权限。

使用
数据库作为起点意味着您将以用户的身份获取数据库。除非用户已经拥有对数据库的Manager访问权限,否则此操作将失败,因为用户没有更新ACL的权限

您可以使用
sessionAsSigner
,但请记住,您不能使用
getCurrentDatabase()
方法。相反,您必须使用
getDatabase(server,filePath)
方法才能获得具有签名者权限的数据库。显然,签名者还需要修改ACL的权限