XPages アプリケーションは、RichText エディターとファイルのアップロード/ダウンロード コントロールにバインドされた 2 つのフィールドを含む「テンプレート」ドキュメントを使用します。通常のドキュメントは、最初は現在のドキュメントの共通フィールド (タイトル、カテゴリ、読者/作成者など) の 1 つのデータ ソースを使用してテンプレート ドキュメントにリンクし、2 番目のデータ ソースはテンプレートからの読み取り専用の RT + 添付ファイルを示します。
ユーザーが RT/添付ファイルを変更することを決定した場合、RT+添付ファイルをテンプレートから現在のドキュメントにコピーすることにより、テンプレートからドキュメントのリンクを解除します。
問題: RT コピー (および添付ファイルも) の標準 Java スニペットは次のとおりです。
session.setConvertMime(true);
RichTextItem rti = (RichTextItem)docTemplate.getFirstItem("Body");
rti.copyItemToDocument(docCurrent, "Body");
rti = (RichTextItem)docTemplate.getFirstItem("Files"); <====
rti.copyItemToDocument(docCurrent, "Files");
docCurrent.save(); //saves in RT format, next save via XPage converts to MIME
これは、本文フィールドでは常に機能しますが (フォーマットが少し変更されます)、添付ファイルではほとんど機能しません。ノーツ クライアントでテンプレート ドキュメントを再保存すると、RT が MIME からネイティブ RT 形式に変換され、コードは問題なく動作します。
機能しないということは、次のことを意味します。
java.lang.ClassCastException: lotus.domino.local.Item incompatible with lotus.domino.RichTextItem
矢印の行で例外。- Files フィールドがありません (本文は正しく作成されています) 一部の添付コード (テキスト ファイル) では動作するように見えますが、より大きなファイルやバイナリ ファイルでは失敗します (23k .doc、3M .pdf)。
エージェントとして呼び出される上記のコードの LotusScript 代替も役に立ちません。データソース プロパティ computeWithForm は、目的では使用されません。
質問:ドキュメント間で MIME 添付ファイルをコピーするための適切な手法は何ですか?