[英]Changes to a Lotus Domino xpages java application do not propagate to the server
[英]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.