2

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 添付ファイルをコピーするための適切な手法は何ですか?

4

1 に答える 1

0

最も簡単な方法は、Document.copyAllItems(Document doc、boolean replace)を使用し、不要なものを削除することです。

于 2012-10-26T07:23:55.037 に答える