在保存文檔時,我正在運行正在執行.save()的SSJS,然後我希望將文檔鏈接(URL)包含在通知電子郵件的正文中通過使用context.getUrl()發送。獲取未保存文檔的URL或文檔ID
這適用於已保存的文檔,因爲它在doc打開時在URL中具有doc id,但不適用於新文檔。有沒有辦法爲沒有ID的新文檔做到這一點?
在保存文檔時,我正在運行正在執行.save()的SSJS,然後我希望將文檔鏈接(URL)包含在通知電子郵件的正文中通過使用context.getUrl()發送。獲取未保存文檔的URL或文檔ID
這適用於已保存的文檔,因爲它在doc打開時在URL中具有doc id,但不適用於新文檔。有沒有辦法爲沒有ID的新文檔做到這一點?
您必須自己構造URL(因爲您已知),因此無法使用context.getUrl()方法。
所以你.save()之後,你可以做類似如下:
var docUrl = context.getUrl().toString().split(view.getPageName())[0] + "/" + database.getFilePath() + view.getPageName() + "?action=openDocument&documentId=" + document.getNoteID();
的context.getUrl().toString().split(view.getPageName())[0]
部分應根據David Leedys xpagescheatsheet.com URL test給你的主機名和數據庫文件路徑。然後我添加當前的XPage名稱和openDocument和docid參數。
另一種可能性:如果您在文檔背後有一個表單,而屬性「打開XPage」,則可以使用http://server/database.nsf/0/universalid
語法。如果文檔中具有唯一標識符,則還可以使用按該標識符排序的視圖,並使用http://server/database.nsf/sortedview/sortkey
。通過排序視圖,您可以在保存前預測URL。
謝謝!經過一些測試,我最終使用了以下代碼:var docUrl = facesContext.getExternalContext()。getRequest()。getRequestURL()。toString()+「?action = editDocument&documentId =」+ currentDocument.getNoteID() –
Ryan:不要使用NodeID。如果你的管理員運行一個壓縮-c,nodeid就會改變。使用universalid – stwissel
謝謝斯蒂芬。結束使用:var docUrl = facesContext.getExternalContext()。getRequest()。getRequestURL()。toString()+「?action = editDocument&documentId =」+ currentDocument.getDocument()。getUniversalID(); –