XPages - Lotus Domino Java - getDocumentByKey

时间:2014-07-14 15:30:47

标签: java xpages lotus-notes

在我的XPage应用程序的Java类中,我试图在Notes视图中处理Notes文档。 Notes视图包含多个Notes文档。要获取我想要的Notes文档,我使用2个键。这会产生错误。如果我只使用一个键,则返回Notes视图中的第一个Notes文档。 Notes视图包含两个排序列。第一列包含empLang值,第二列包含templateType值。这是我的代码:

    String empLang = "en";
    String templateType = "C";
    Database dbCurr = session.getCurrentDatabase(); 
    String viewName = "vieAdminTemplates" + empLang;
    View tview = dbCurr.getView(viewName);
    Vector viewKey = new Vector();
    viewKey.addElement(empLang);
    viewKey.addElement(templateType); // this line causes the code to fail
    Document templateDoc = tview.getDocumentByKey(viewKey);

造成这个问题的原因是什么?

3 个答案:

答案 0 :(得分:1)

一些想法

1)您可以将密钥连接到单个列中,因为您说这有效。类似于' en~C'

2)您可以使用database.search方法,其中包含一个隔离所需文档的公式语言字符串。它返回一个集合,然后从那里拉出文档。

答案 1 :(得分:1)

getDocumentByKey适用于多个列。双打有一个已知问题,但你没有打到那里。突出的一点是第二列只是一个字母。当你执行addElement或视图时,可以将其视为Char而不是String。

我建议调出它们的数据类型。 viewKey.get(1).getClass()。getName()我认为它为你提供了存储的类。对View Column值执行相同操作。

当你说它导致代码失败时,它是如何失败的?它不会返回任何内容或抛出错误吗?

我的下一步是尝试在View和Vector包含多个字符的位置进行测试,例如: “CC”,用于帮助检查Java getDocumentByKey和单个字符是否存在潜在问题。

答案 2 :(得分:0)

我很抱歉。这里的问题是代码中的视图名称不正确。有一个视图" vieAdminTemplates"但它没有第二列包含值" C"。使用正确的视图,代码工作正常。感谢您抽出宝贵时间回答我的问题。