簡體   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