我正在使用Lotus Notes版本8.5.2 ..我对lotus.domino java API相对较新。我需要检索Deny Access Group中的成员并将其放入文件中。如何使用API提供的访问成员...?在这方面的任何帮助表示赞赏..
我从答案中得到了以下代码。让我知道我是否朝着正确的方向前进。
lotus.domino.Document fDoc = null;
lotus.domino.Database fDb = null;
lotus.domino.View view = null;
fDb = NotesSess.getDatabase(sServerName, "names.nsf");
view = fDb.getView("DenyLists");
fDoc = view.getFirstDocument();
while(fDoc != null)
{
java.util.Vector fItems = fDoc.getItems();
for(int iCnt=0 ; iCnt < fItems.size();iCnt++)
{
lotus.domino.Item fItem = (Item) fItems.elementAt(iCnt);
if(fItem.getName()== "Members")
{
Vector fItemValues = fItem.getValues();
int fNumValues = fItemValues.size();
String fValueStr = null ;
for(int ii=0 ;ii < fNumValues ;ii++)
fValueStr = (String) fItemValues.elementAt(ii);
}
}
}
我会在变量fValueStr
中找到成员吗?
答案 0 :(得分:3)
可以在大多数服务器上的help\help85_designer.nsf
本地找到Notes对象引用。
可以在此处找到Web版本(包含大量示例代码):http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=%2Fcom.ibm.designer.domino.api.doc%2Fr_domino_Database.html
这是一些伪代码:
我已经假设你已经初始化了NotesSession对象。
names.nsf
并将其分配给NotesDatabase
对象。DenyLists
并将其分配给NotesView
对象。NotesDocument
对象。答案 1 :(得分:0)
如@ PanuHaaramo评论中所述,您的代码是无限循环。如果在DenyLists视图中只有一个Group文档,那么while循环是不必要的,所以只需删除它。如果可能有多个,则保持while循环,但在结束之前添加fDoc = view.getNextDocument(fDoc)。
Panu也是正确的,你真正让自己变得更加困难。您可以使用getItemValue(“Members”)代替使用getItems()并循环遍历结果,这将返回字符串向量。
此外,如果您打算运行代码的环境可能在“拒绝访问”列表中使用嵌套组,那么您将需要编写其他代码来测试每个String以查看它是用户还是组 - 并且代码(递归地,因为拒绝列表中的组也可以包含组)访问任何嵌套组并获取其成员。