当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2012年8月16日木曜日

XPagesで添付ファイルの処理をする(アップロード)

こんにちは。今日も暑いですね。
筆者は今日もお仕事です。夏休みはいつにしようかな。なんて考えていますが、そもそも取れるのかどうかが分かりません。

そんな筆者に応援のクリックをお願いします。
にほんブログ村 IT技術ブログへ



さて、今日はXPagesでの添付ファイルの取り扱い方について検証しましょう。
一度、サンプルのアプリケーションを作っていたのですが、今になって、「ん?どうやって制御しているんだっけ?」となってしまったので、筆者的には復習です。


まずは、普通に?フォームを作成します。今回は検証なので、必要最低限のフィールドということで、
フィールド名 種類
Subject テキスト
Body リッチテキスト
とします。

フォーム名は、MainTopic としておきましょう。
MainTopic フォーム

次に、MainTopicという名前でXPageを作成します。
プロパティビューの「データ」タブで、Domino文書のデータソースを作成します。フォームはもちろん、作ほど作成したMainTopicを選択します。
データソースを追加


今度は、コントロールビューの「コアコントロール」タブから、編集ボックスを選択して編集領域にドラッグ&ドロップします。
画面に表示したときに分かりやすいように、表やラベルも一緒に作成しておきましょう。
MainTopic XpageにSubject 編集ボックス、その他を追加

次に添付ファイルをアップロードするためのコントロールを追加します。
編集ボックスと同じ「コアコントロール」タブの中に、『ファイルのアップロード』があるので、それをドラッグ&ドロップします。
ファイルのアップロードをドラッグ&ドロップ

追加されたら、プロパティビューの「データ」タブを表示します。
このアップロードコントロールをMainTopicフォームのBodyフィールドにバインドするための設定を行います。
ファイルのアップロードにBodyフィールドをバインドする

このままでも良いのですが、それだと文書を保存したときにファイルが添付されることになり、複数のファイルを添付するのが面倒です(保存 -> 開く -> 編集 -> 添付 -> 保存・・・の繰り返し)。

だからといって、ファイルのアップロードコントロールを追加するのは格好良くありません。
では、どうすれば良いのでしょうか?


・・・

まずは、添付されたファイルを表示するためのコントロールを追加します。
『ファイルのダウンロード』コントロールをドラッグ&ドロップします。
ファイルのダウンロードコントロールを追加

オプションがあるので、変更しておきます。好きなようにして良いのですが、筆者のお薦めは
・添付ファイルがない場合は非表示
・削除を許可
にチェックを付けておくことです。
ファイルのダウンロードコントロールのオプション

また、ファイルのアップロードコントロールと同じように、MainTopic フォームのBody フィールドにバインドします。

今度はファイルのアップロードコントロールに戻って、そのイベントビューを開きます。
デフォルトでは、マウスのonClickにフォーカスが当たっているので「選択して変更」のonChangeをクリックしてフォーカスを当てます。
そして、画面右側にあるサーバーオプションを「すべて変更」にします。
この時、「検証を行わずにデータを処理する」にチェックを付けておきましょう。
これをしておくと、「妥当性検査」が設定されていても、問題なく更新が行えます。


これで、文書を保存するまでに複数のファイルを添付できるようになります。
実際にWebブラウザでプリビューしてみましょう。
Webブラウザでのプリビュー

どうでしょう?従来のWebアプリケーションでは、埋め込み設計要素のファイルのアップロードをいくつも設定しないと、同時に複数のファイルを添付できませんでしたが、XPagesではこんなに簡単にできるのです。

また、フィールドにバインドすることにより、ノーツクライアントで文書を開いたときに、フォームの欄外ではなく、フィールドのアイテムとして添付ファイルが設定されます。
これも従来のWebアプリケーションから進化したところではないでしょうか。


皆さんも試してみてください。



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: