0

我使用的是 Lotus Notes 8.5.2 版。我对 lotus.domino java API 比较陌生。我需要检索拒绝访问组中的成员并将其放入文件中。如何使用提供的 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吗?

4

2 回答 2

3

Notes 对象引用可以help\help85_designer.nsf在大多数服务器上本地找到。可以在此处找到 Web 版本(带有大量示例代码): http: //publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=%2Fcom.ibm.designer.domino.api。 doc%2Fr_domino_Database.html

这是一些伪代码:

我已经假设您已经初始化了 NotesSession 对象。

  1. 在服务器上打开names.nsf并将其分配给一个NotesDatabase对象。
  2. 获取视图DenyLists并将其分配给NotesView对象。
  3. 遍历视图将每个新文档分配给一个NotesDocument对象。
  4. 您想从拒绝访问组文档中获取的 NptesItem 是成员,它包含用户或嵌套组的列表。
于 2013-01-09T09:00:28.457 回答
0

正如@PanuHaaramo 的评论中所述,您的代码是一个无限循环。如果 DenyLists 视图中只有一个 Group 文档,那么 while 循环是不必要的,所以只需摆脱它。如果可能不止一个,则保留 while 循环,但在结束 } 之前添加 fDoc=view.getNextDocument(fDoc)。

Panu 也是正确的,你真的让自己变得比需要的更难。您可以只使用 getItemValue("Members"),而不是使用 getItems() 并循环遍历结果,这将返回一个字符串向量。

此外,如果您打算运行代码的环境可能在拒绝访问列表中使用嵌套组,那么您将需要编写额外的代码来测试每个字符串以查看它是用户还是组 - 以及代码to(递归,因为拒绝列表中的组也可以包含组)访问任何嵌套组并获取其成员。

于 2013-01-09T22:51:43.417 回答