繁体   English   中英

XPages-Lotus Domino Java-getDocumentByKey

[英]XPages - Lotus Domino Java - getDocumentByKey

在XPages应用程序的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);

可能是这个问题的原因?

几个想法

1)因为您说可以,所以您可以将密钥连接到一个单独的列中。 像“ en〜C”之类的东西

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

getDocumentByKey可用于多列。 双打存在一个已知问题,但您并没有在那儿遇到问题。 突出的一件事是第二列只是一个字母。 在您执行addElement或通过视图时,可以将其视为Char而不是String。

我建议调试一下它们是什么数据类型。 我认为viewKey.get(1).getClass()。getName()给了您存储它的类。 对“查看列”值执行相同的操作。

当您说它导致代码失败时,它怎么会失败? 它只是不返回任何东西或引发错误吗?

我的下一步是尝试在View和Vector包含多个字符(例如“ CC”)的地方进行测试,以帮助检查Java getDocumentByKey和单个字符是否存在根本问题。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM