ShowTable of Contents
概要
XPagesにて保存を実施する場合、LotusScriptと使用する関数は異なるが、同じような記述内容で文書の保存を行うことができる。
実現方法
実現方法にあたっては、現在バインディングした文書情報を保存する場合と、他のDBにある文書に対して保存を行う場合を例として記述する。
No. | 実現例 | 詳細 |
(1) | 現在バインディングした文書情報を保存 | (シンプルアクション) | シンプルアクションを使用して文書を保存する。 |
(2) | (JavaScript) | JavaScriptを用いて文書を保存する。
保存のタイミングで値を変換するなど、複雑な処理を行う場合に使用する。
|
(3) | 他のDBにある文書を保存 | (JavaScript) | 他DBに存在する文書に対して更新を行う。 |
現在バインディングした文書情報を保存(シンプルアクション)
保存ボタンの[イベント]の中にシンプルアクションを記述する。
1.フィールドの配置
データソースのフィールドをXPageにドラッグ&ドロップする。

2.ボタンの配置
入力項目を保存するためのボタンを配置する。

3.ボタンの設定
3-1.ボタンの[イベント]タブから、[アクションの追加]を行う。

3-2.アクションにて [文書の保存]を選択。
データソース名にて保存対象のデータソースを指定する。
◆補足
データソース名を指定しなければ現在の文書を保存する。(動作は上の例と同様)

4.保存内容の確認
ブラウザで入力項目に値を入力して[Save]ボタンをクリックすると、入力した内容が保存される。
◆ブラウザイメージ
各項目に、値を入力して[Save]ボタンをクリックする。

◆Notesのビュー
入力した内容が文書として保存される。

◆補足
手順「3.ボタンの設定」の「アクション」で[データソースの保存]を選択した場合、データ保存され新しいページが開く。
保存では、現在のページに表示されている全てのデータソースが保存される。
また、新しく開くページには、「同じページ」、「前のページ」、「起動ページ」、または特定のxPageを設定できる。
保存内容の確認
◆ブラウザイメージ
各項目に、値を入力して[Save]ボタンをクリックする。

→同じページが開く。(新規登録できる状態となる)

◆Notesのビュー
入力した内容が文書として保存される。

現在バインディングした文書情報を保存(JavaScript)
保存したい値をスコープ変数へ割り当て、保存ボタンの[イベント]のサーバーサイドにJavaScriptを記述する。
1.スコープ変数へ割り当て
各入力項目の[プロパティ]タブの[データ]を選択し、スコープ変数に割り当てる。(例はリクエスト変数colorに割り当て)

2.コードを記載
ボタンの[イベント]タブから、[スクリプトエディタ]を選択し、コードを記載する。
項目 | 内容 |
「Save」ボタン | ・[イベント]-[onclick]-[サーバー]-[スクリプトエディタ]内に下記を記述する。
var doc = database.createDocument();
doc.replaceItemValue("Color",requestScope.color);
doc.replaceItemValue("Shape",requestScope.shape);
doc.replaceItemValue("Statement",requestScope.statement);
doc.replaceItemValue("Form","AgentDemo");
doc.save();
requestScope.color = null;
requestScope.shape = null;
requestScope.statement = null;
 |
3.保存内容の確認
ブラウザで入力項目に値を入力して[Save]ボタンをクリックすると、入力した内容が保存される。
◆ブラウザイメージ
各項目に、値を入力して[Save]ボタンをクリックする。

→入力項目がクリアされる。(新規に登録できる状態となる)

◆Notesのビュー
入力した内容が文書として保存される。

◆補足
スコープ変数を使わない場合は、以下の記述でも同じ結果が得られる。
var doc = database.createDocument();
doc.appendItemValue("Form","AgentDemo");
doc.appendItemValue("Color",getComponent("color1").getValue());
doc.appendItemValue("Shape",getComponent("shape1").getValue());
doc.appendItemValue("Statement",getComponent("statement1").getValue());
doc.save();
getComponent("color1").setValue("");
getComponent("shape1").setValue("");
getComponent("statement1").setValue("");
他のDBにある文書を保存(JavaScript)
編集ボックスとボタンを配置し、[イベント]でサーバーサイドにJavaScriptを記述する。
1.フィールドの配置
編集ボックスとボタンを配置する。

2.コードを記載
ボタンの[イベント]タブから、[スクリプトエディタ]を選択し、コードを記載する。
項目 | 内容 |
「他のDBの文書を更新」
ボタン
| [イベント]-[onclick]-[サーバー]-[スクリプトエディタ]内に下記を記述する。
var db = session.getDatabase("rskk563/rskkgdev852","NotesDB/Miyani/study/mine/xScrapbo.nsf");
var doc = db.createDocument();
doc.replaceItemValue("Form","AgentDemo");
doc.replaceItemValue("Color",getComponent("color").getValue());
doc.replaceItemValue("Shape",getComponent("shape").getValue());
doc.replaceItemValue("Statement",getComponent("statement").getValue());
doc.save();
getComponent("color").setValue("");
getComponent("shape").setValue("");
getComponent("statement").setValue("");
 |
3.保存内容の確認
ブラウザで入力項目に値を入力して[他のDBの文書を更新]ボタンをクリックすると、入力した内容が保存される。
◆ブラウザイメージ
各項目に、値を入力して[他のDBの文書を更新]ボタンをクリックする。

◆Notesのビュー
入力した内容が文書として保存される。

調査環境
Lotus Domino Designer 8.5.3 Upgrade Pack1
Internet Explorer 8
Google Chrome 19.0.1084.46 m
Mozilla Firefox 12
Safari 5.1.5
この記事は九州地区ノーツパートナー会技術部会(リコー IT ソリューションズ 株式会社)によって作成されました。