HCL Domino 日報 — 每日技術精選
HCL Domino 中英雙語日報,每日精選生態系最新動態與技術深度文章。
最新文章
- XPages 存檔衝突:為什麼「只有你一個人」還會跳存檔衝突
「Document has been saved by another user」——奇怪的是根本沒別人在動這份文件,存檔衝突卻偶爾自己冒出來。這篇講一個 XPages 老坑:在同一份文件上混用 dominoDocument 資料來源的存檔與後端 Document 的存檔,會讓 Domino 的衝突判定誤判、生出一份 conflict 文件。從官方的衝突機制($Revisions)講起、拆解 assono 那個經典重現,並在 Domino 12.0.2 與 14.5.1 各自實測看這個 2013 年的坑現在還在不在。
2026.09.16 - NotesView AutoUpdate=False:迴圈裡改文件為什麼越跑越慢、還跳「Entry not found in index」
一個 agent 迴圈跑 view、順手改文件,結果越跑越慢,甚至偶爾拋「Entry not found in index」。罪魁是 NotesView 預設會自動刷新:當你的迴圈改動的正是這個 view 索引的文件,view 就在你腳下一直重整,效能爛掉、導覽位置也可能失效。解法一行——迴圈前 view.AutoUpdate = False。這篇講清楚機制、正確的「先抓下一個再改」寫法,以及三個要知道的副作用(快照、只管當前程式、要 Refresh 才看得到更新)。
2026.09.15 - NoteID、UNID、@DocumentUniqueID:Domino 文件的三個 ID 到底差在哪
要指涉一份 Domino 文件,你可能會抓 NoteID、UniversalID(UNID),或在 Formula 用 @DocumentUniqueID——三個長得像、行為卻天差地遠。NoteID 只在單一資料庫檔內有意義、換個 replica 就變了;UNID 是 32 字元、跨所有 replica 都一樣的真身分;@DocumentUniqueID 回的就是 UNID(但不加 @Text 會變成 doclink)。這篇把三者的範圍、穩定性、該用哪個講清楚,含「改 UNID 會變新文件」「存重複 UNID 噴 4000」等雷,以及 web URL 那個 /0/UNID 的由來。
2026.09.14 - XPages 附件多選批次刪除:官方只能一次刪一個,自己補上「勾選多個、存檔一次刪」
XPages 的 File Download 控制項只給你一列一個、一次刪一個附件,沒有「勾選多個、一次刪」的原生做法——連做得很完整的生產表單也缺這塊。這篇先實測澄清一件事:原生刪除其實是「存檔才生效」、很守規矩;再用同樣 save-bounded 的官方 API(NotesXspDocument.removeAttachment)自己補上多選批次刪,在測試環境(Domino 12.0.2)做出一個可勾選、可反悔、存檔一次落地的實作。
2026.09.13 - XPages 檔案上傳失效:xspupload 暫存夾被 Windows cleanmgr 清掉的根源與解法(含 14.0 修復)
XPages 的檔案上傳控制項按了沒反應、使用者端沒錯誤、server console 卻報 IOFileUploadException「The system cannot find the path specified」。根源是 Domino 上傳用的暫存夾 xspupload 不見了——常常是 Windows 的磁碟清理 cleanmgr 在 Domino 執行中把它連同 temp 檔一起清掉。這篇把官方 KB 與實務串起來:症狀與根源、暫存夾為什麼會消失、以及從「每晚上下 http」這種 band-aid 到 notes_tempdir、程式化檢查重建、升級 14.0(defect 已修)的幾種解法。
2026.09.12 - 傳統 Domino web 附件 UI 的眉角:用 $V2AttachmentOptions 藏掉陽春預設,自己畫下載清單與刪除
在 Domino web form 放個 File Upload Control、加個儲存鈕,功能是通了——但畫面很陽春:附件被 Domino 倒在頁尾、編輯時還多出一排沒法美化的「標記要刪除」勾選框。這篇講傳統 Domino web 開發者的老手法:用 $V2AttachmentOptions="0" 把預設附件區藏掉、用 passthru HTML 配 @AttachmentNames 自己畫下載清單、以及那個很少人講清楚的刪除機制 %%Detach(自訂勾選框、或走 WebQuerySave)。含 $V2AttachmentOptions 只有 0/1、文字不是數字等踩雷點。
2026.09.11 - 把 Domino 附件用 REST 拋出去:DRAPI 與 DAS 都有附件端點,差在現代 vs 舊版
前幾篇都是使用者從 UI 上傳附件;但有時你要用 REST 把附件程式化地拋進拋出。Domino 有兩套 REST API:DRAPI(現代、KEEP)與 DAS(舊版、Extension Library)。常見的誤解是「DAS 只能讀」——其實不然,DAS 一樣有專屬的附件端點可以新增/讀取/更新/刪除。真正的差別是現代 vs 舊版,加上一個 DAS 特有的陷阱:別把內嵌附件資料的整份文件拿去 create/update(會回 400),要走專屬附件端點。這篇把兩者的端點與差異對照清楚。
2026.09.10 - Domino 多檔上傳與依條件刪附件:傳統 web、XPages 14.5.1
上一篇講怎麼在三種情境各附一個檔;這篇進到「一次很多個」:傳統 web form 靠 HTML5 的 multiple 屬性一次選多檔、XPages 到 14.5.1 才終於預設支援多選(在那之前是 OpenNTF 社群方案的天下),以及實務上最常遇到、參考卻最少的「依條件挑著刪」——迭代 EmbeddedObjects、依 .Source 檔名條件逐一 Remove(附可照跑範例)。附一張圖說明多選的檔怎麼落到同一個富文本欄位。
2026.09.09 - Domino 附件的三種上傳法:Notes client、傳統 web form、XPages
在 Notes client 附一個檔案,把它拖進富文本欄位就好,簡單到不像個功能。但同樣的需求搬到 web、或搬進 XPages,「怎麼讓使用者上傳檔案」就變成三個不同的答案:client 靠富文本欄位、傳統 web form 用 File Upload Control 這個內嵌元素、XPages 用 xp:fileUpload 搭 xp:fileDownload。這篇把三種前端上傳機制擺在一起對照,並點出讓人安心的一件事——三者最後都落在文件的同一個富文本欄位裡,所以後端撈檔、抽取、刪除的程式碼是共用的。
2026.09.08