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

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

2011年12月19日月曜日

おじさんSEが学ぶXPages(12)

えー・・・なんと二日続けての更新です(執筆開始時の時刻です)。
さすがに、入力チェックのことを書くのに、一週間も空けるのは・・・という次第です。

実は、この部分も昨日中に書いてしまおうかと思ったのですが、入力チェックの方法を
「ど忘れ」してしまい、調べるのに時間がかかったので、持ち越したというのが真相です。
筆者でもこんなことはあります。
題名通り、もうおじさんです・・・


さて、そんなおじさんを応援してから読んでくださいね。
にほんブログ村 IT技術ブログへ



ということで、入力チェックについてです。


XPagesの機能として、提供されている入力チェック方法は(筆者が知りうる限り)2つです。
(他にもご存じの方がいれば、読んだ後にコメントくださいm(_ _)m)

それぞれ、実装しながら、紹介していきます。

では、まずは「蔵書登録/編集」画面に入力チェック機能を実装しましょう。
「BookResource」カスタムコントロールを開きます。

フィールド数が少ないので、全部に入力チェックをかけても良いのですが、今回は「蔵書名」に入力チェックをかけます。
蔵書名のフィールド(BookName)を選択します。
「プロパティ」ビューの「妥当性検査」タブを開きます(下図参照)。
妥当性検査タブ

この中の「必須フィールド」のチェックをつけて、「必須フィールドのエラーメッセージ」に入力チェック時のエラーメッセージを入力します。
今回は、「蔵書名が入力されていません。」とします。


ちなみに、その右側にある「長さバリデータ」の箇所に、数値を入力しておくと、フィールドに入力された文字数が範囲外の時はエラーとして扱う事が出来ます。
※蔵書名は、長さ制限を設ける必要がないため、ここは何も設定しません。

これで良いのですが、このままだと画面が切り替わるたびに、この項目の入力チェックが行われます。
[キャンセル]ボタンをクリックされたときや、別のタブ(蔵書一覧、貸し出し一覧)を選択されたときは、入力チェックが行われては困ります。
そこで、これらのアクションが行われるときは、入力チェックが行われないようにします。

[キャンセル]ボタンを選択した状態で、「イベント」ビューを開きます。
「サーバーオプション」の中にある「データの検証または更新を行わない」にチェックをつけます(下図参照)。
データの検証または更新を行わない

これで保存します。

※ 2011/12/21 追加
[キャンセル]ボタンですが、次の方法でも、「データの検証または更新を行わない」にチェックをつけることが可能です(情報提供者は、S山さんです。ありがとうございます)。
ボタンコントロールを選択して、「プロパティ」ビューを開きます。
「ボタン」タブにある「ボタンの種類」を"ボタン"から"キャンセル"に変更します(下図参照)。
ボタンを「キャンセル」ボタンに変更する

この状態で、ボタンコントロールの「イベント」ビューを見ると、あら不思議。
確かに「データの検証または更新を行わない」にチェックが付いています。
ということで、こちらの方がボタンの用途もはっきりとしてわかりやすいですね。
是非、覚えておきましょう。
ちなみに、「データの検証または更新を行わない」にチェックをつけたボタンは、自動で「ボタンの種類」が"キャンセル"になります。併せて覚えておきましょう。




次に、タブを選択されたときの動作から入力チェックを外します。
「container」カスタムコントロールを開きます。

その中にあるタブパネルの「蔵書一覧」を選択して「イベント」ビューを開きます。
先ほどと同じく「データの検証または更新を行わない」にチェックをつけます(下図参照)。
データの検証または更新を行わない2

設定できたら、「貸し出し一覧」のタブのイベントも同様に設定してください。
これで「container」カスタムコントロールを保存します。


ここで、実際にエラーはどのように表示されるのかをプリビューしてみました(下図)。
入力チェックによるエラーダイアログの表示

ノーツアプリケーションでよく見るような画面ですね。
プリビューはノーツクライアントで行いましたが、ブラウザでもほぼ同じ画面になります。このあたりは、さすがXPagesと言ったところでしょうか(従来のノーツWebアプリケーションではこうはいきません)。
ちなみに、[キャンセル]や「蔵書一覧」「貸し出し一覧」のタブをクリックしても、入力チェックは働きません。

ただ、この場合、一度に一つのフィールドしかチェックできません。このサンプルのように入力チェックのフィールドが少なければそれでも良いのでしょうが、10個くらいの入力チェックのフィールドがあったら、その都度エラーを表示されるのは、面倒です。
そんなときは、次の方法を使うと良いでしょう。

ということで、エラーメッセージをダイアログではなく、入力ページ上に表示させてみます。
再度、「BookResource」カスタムコントロールを開きます。

「コントロール」ビューの「コアコントロール」にある「エラー表示」を「BookName」フィールドの横にドラッグ&ドロップします(下図参照)。
エラー表示コントロール

ドラッグ&ドロップできたら、「プロパティ」ビューを開きます。
「エラー表示」タブの「次のエラーメッセージを表示」のところのリストボックスから「bookName1」を選択します(下図参照)。
エラー表示を適用するコントロールを選択

さらに、この「エラー表示」コントロールが有効になるようにします。
蔵書名(BookName)コントロールを選択して、「プロパティ」ビューを開きます。
「すべてのプロパティ」タブを開きます。
「データ」「disableClientSideValidation」の値を"true"に変更します(下図参照)。
disableClientSideValidation

これで「BookResource」カスタムコントロールを保存します。


こちらについても、プリビューテストを行ってみました(下図)。
エラー表示コントロールによるエラーメッセージ

エラーメッセージが入力ページ内に表示されますね。「エラー表示」コントロールをうまく配置すれば、どのフィールドでエラーが発生しているのかもわかりやすくなります。

ということで、「蔵書貸出」画面でも、この形で入力チェックを施します。
こちらは「貸出者」「蔵書名」「貸出日」「返却期限」に入力チェックを設定してください。

このとき、「貸出日」「返却期限」はそれぞれ最小値、最大値の設定も行います。
「貸出日」の最小値は、@Today(下図参照)、
「返却期限」の最大値は、@Adjust(@Today(),0,0,14,0,0,0)
とします。
貸出日の妥当性検査

エラー表示コントロールを使うので、各編集ボックスコントロールの「disableClientSideValidation」をtrueにするのを忘れないようにしてください。
また、[キャンセル]ボタンの「データの検証または更新を行わない」のチェックをつけるのも忘れないように!
すべて出来たら、「LendData」カスタムコントロールを保存します。

下図は、このプリビューです。
複数のエラーメッセージの同時表示

確かに同時に複数のエラーメッセージが表示されています。



これで、「蔵書登録/編集」画面、「蔵書貸出」画面の入力チェックが完了しました。

次回は、いよいよ「蔵書の返却」について、取り扱います。
お楽しみに!




Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: