D HCL Domino 日報
所有文章 搜尋 類別地圖 關於
文 A
  • Java
    Java 的 NotesException:.id、.text 與 try/catch/finally

    LotusScript 的錯誤處理是 On Error Goto、Err.Number、Resume 那一套。搬到 Java,幾乎每個 lotus.domino 方法都會丟一個受檢的 NotesException——編譯器逼你處理,而它身上帶著 .id(Notes 錯誤碼)與 .text(錯誤訊息)。這篇講 Java 版的例外處理:NotesException 的欄位、怎麼用 .id 比對 NotesError 常數做針對性處理,以及把這整個 Java 資料層系列收在一起的那條規則——recycle 要放進 finally,這樣連拋例外時也收得乾淨。

    2026.08.17 →
  • Java
    在 Java 裡迴圈跑 DocumentCollection:先拿下一份,再 recycle 這一份

    LotusScript 裡跑一個 DocumentCollection,你 Set doc = coll.GetNextDocument(doc) 一路跑到底,從不想記憶體的事。搬到 Java,同一個迴圈跑上萬份文件會把 agent 記憶體吃垮——除非你在迴圈裡 recycle 每一份,而且順序不能錯:得先用當前這份拿到下一份、再 recycle 當前這份。這篇講 Java 版的正確迭代寫法:DocumentCollection 的 getFirstDocument/getNextDocument、刪除標記的 isValid、什麼時候該改用更省的 ViewNavigator,以及那個 LotusScript 從不需要煩惱的 recycle 順序。

    2026.08.16 →
  • Java
    在 Java 裡處理 Notes 日期,為什麼不能直接用 java.util.Date?

    在 Java 裡處理 Notes 的日期,你不能直接用 java.util.Date——中間隔著一個 lotus.domino.DateTime。它是個背後連著 handle 的重量級後端物件,在迴圈裡不 recycle 就漏記憶體;它用字串在存日期、壞值會丟例外;而 toJavaDate() 是你把它換成 Java 自家時間型別、再接上 java.time 的那座橋。這篇講 Java 版 DateTime 怎麼建、怎麼讀寫、怎麼跟 Java 的時間世界互轉,以及那個從 LotusScript 帶不過來的 recycle 負擔。

    2026.08.15 →
  • Java
    Java 讀寫 Notes item:getItemValue 回的是 Vector,不是你熟的那種陣列

    LotusScript 裡 doc.GetItemValue 回一個 Variant 陣列,你 For 一圈就完事。搬到 Java,同一個呼叫回的是 java.util.Vector,元素型別要自己認、缺欄位不丟例外只回空的、裡面若是 DateTime 還會漏記憶體。這篇把 Java 版 Document 的讀寫 item 講清楚:getItemValue 與那幾個型別化 getter 的回傳與缺欄位行為、replaceItemValue 接受哪些 Java 型別又會自動建 item、appendItemValue 為什麼會默默建出重複 item,以及三個 LotusScript 帶不過來的雷。

    2026.08.14 →
  • Release Notes Domino IQ
    Domino 14.5.1 FP1 有什麼:RAG 能接遠端模型、49 個修正、JVM 更新

    Domino 14.5.1 的第一個 Fix Pack 在 2026-07-16 悄悄上線,官方一句「建議所有客戶安裝」帶過。這篇把它對開發者與管理者最有感的幾點整理出來:RAG 多了 Remote 模式(LLM 可接遠端、向量庫仍在本機)、約 49 個修正裡不少是修回 14.5.1 自己的 regression、JVM 更新到 Semeru 21.0.11+10、兩個 OIDC 安全修正,以及幾個藏在 notes.ini 的小開關。

    2026.08.13 →
  • SSJS
    XPages/SSJS:直接用 java.util.Vector 操作多值欄位

    LotusScript 沒有 removeElementAt、刪一個多值元素得重建陣列;SSJS 剛好相反——它跑在 Java 上,多值欄位讀進來就是一個 java.util.Vector,addElement/removeElementAt/insertElementAt 整套 API 現成可用,改完用 replaceItemValue 寫回。這篇拆解怎麼用 Vector 操作多值、倒著刪的原理、以及兩個一定會踩的雷(空欄位的 [""]、getValue 的型別)。

    2026.08.12 →
  • LotusScript
    LotusScript 沒有 removeElementAt:從陣列、List、多值欄位刪一個元素

    在 SSJS/XPages 裡刪一個多值元素很順——java.util.Vector 有 removeElementAt,倒著跑迴圈依 index 刪就好。搬到 LotusScript 卻卡住:沒有 Vector、沒有 removeElementAt,而 Erase 對陣列是「整個清空」不是「刪一個」。這篇拆解 LS 的實際選項——先分清你的集合是什麼,再用 Split/Join、陣列重建、List 的 Erase(tag)、或 Evaluate + @Replace。

    2026.08.11 →
  • Java
    Java agent 的骨架:觸發、權限、輸出、除錯

    前三篇都假設「agent 已經在跑」——會 recycle、拿到 Session、跑 DQL。但一個 Java agent 到底怎麼被觸發、用誰的權限執行、System.out 跑去哪、怎麼 debug?這篇補上最前面那一步:AgentBase/NotesMain 骨架、Trigger 與 unprocessedDocuments、agent signer 決定的權限、restricted/unrestricted,以及 System.out 進 log.nsf 的除錯路徑。

    2026.08.10 →
  • Java DQL
    在 Java 裡跑 DQL:DominoQuery 與 QueryResultsProcessor

    站上的 DQL 三部曲教你寫查詢,但那是從 LotusScript 或 console 跑的。搬到 Java,DQL 走兩個類別:DominoQuery 負責編譯、調校、執行,QueryResultsProcessor 負責排序、彙總、跨庫 join、輸出 JSON。還有一個容易錯的地方——這兩個都從 Database 取得,不是 Session。這篇拆解 Java 端怎麼把 DQL 跑起來。

    2026.08.09 →
‹ 上一頁1…8910…22下一頁 ›
由 Astro 與 GitHub Actions 驅動