我目前正在创建一个java方法(和XPages托管bean的一部分)来检索用户(不一定是当前用户)所属的列表组。
是否有任何简单的方法可以重新设置这些信息,或者我是否必须遍历所有组来检查用户,并检查这些组是否是其他组的子组?
在这里的博客文章中回答了这个问题:http://ntf.gbs.com/nathan/escape.nsf/d6plinks/NTFN-8TMHRP
简单的版本是,你正在寻找的是…
lotus.notes.addins.DominoServer server = new lotus.notes.addins.DominoServer("YourCanonicalServerName");
Collection nameList = server.getNamesList("TheUserNameYou'reLookingFor");
这应该就是你所需要的。
使用以下代码段:
XSPContext context = XSPContext.getXSPContext(FacesContext.getCurrentInstance());
DirectoryUser currentUser = context.getUser();
Vector<String> groups = new Vector(currentUser.getGroups());
您可以从names.nsf中的($ServerAccess)
视图中检索此信息,该视图按用户名分类。
session.eevaluate("@UserNamesList");
与其循环浏览服务器上所有目录中的所有组,您可能更喜欢在每个由组成员组织的控制器中创建一个特殊视图。这使得查找匹配项的速度要快得多。
Jasper提到的GroupManager工具也是LotusScript代码的一个很好的例子,它可以实现您想要的大部分功能。Java中的对象是相同的,语法只是更令人讨厌。
/Newbs
不确定您是否可以在这里(重新)使用LotusScript,但本文(IBMDeveloperWorks,参见第4段)是一个很好的开始。它提到NotesGroupManager和NotesGroup类。这些类可以作为重写XPages代码的基础。似乎没有其他"简单"的方法可以找到用户所属的所有组。这个问题的直接答案似乎是否定的。