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

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

2014年7月1日火曜日

XPagesを使って同じURLで別の内容を表示させてみる

こんにちは。気が付いたら、7月です。つまり、1年のうち、半分が過ぎてしまったという事になります。
1年の初めにたてた計画は順調に進んでいますでしょうか?
私?さぁ、どうなんでしょう。残り半年、悔いのないように過ごしましょう。

さて、今日も本題に入る前にボタンクリックよろしくです。
にほんブログ村 IT技術ブログへ


今日もXPagesネタです。
XPagesの画面は「XPage」と「カスタムコントロール」の2種類から成り立っていて、それぞれ「フォーム」と「サブフォーム」のような関係だよ。
という話は聞いたことがあるかと思います。
ですが、=(イコール)ではなく、≒(ほぼ等しい)なんですね。

そのため、「フォーム」と「サブフォーム」ではできていたのに、XPagesになったらできないよ!というものもあったりします。
例えば、「サブフォームの挿入」。通常は、指定したサブフォームをフォーム上に挿入するのですが、「式の定義によりサブフォームを挿入」を選択して[OK]をクリックすると(下図参照)、どのサブフォームを挿入するのかを決める式が記述できるようになります。
サブフォームの挿入
式はこんな感じに書きますね(あくまで一例)。ここで気を付けなければいけないのは、サブフォームの挿入は動的に行うことはできません。フォームを開いた時に決まります。
サブフォームの挿入式


こんな感じのことをXPagesでやってみよう!となるのですが・・・
さぁ、どうすれば良いでしょう?


XPageの中にカスタムコントロールを配置する?普通なら、そう考えますよね。
ところが、実は、これができないんですね。
カスタムコントロールは指定したものしか挿入できないのです。
計算式によって、挿入するものを変更できないんですね。

では、どうするのかというと・・・
「ページの組み込み」コントロールを使います。
コンテナコントロールの中に「ページの組み込み」があるので、それをXPage(もしくはカスタムコントロール)の中に ドラッグ&ドロップします。
ページの組み込みコントロールを使う

すると、どのページを挿入するのかを選択するダイアログが表示されるので、「ページの自動生成」を選択します(下図参照)。
ページの選択

ここで、ページ名を入力しても良いですが、それでは意味がないので、◇をクリックして、「値の計算」を選択します。
ここに式を記述することにより、任意のページを挿入することができます。

サンプルでは、「selectPage1」という名前のコンボボックスを作成しておき、データは「sessionScope.selectedPage」にバインドするようにしておきます。
また、その隣にボタンコントロールを配置しておきます。このボタンの「onClick」イベントに自ページを開くというアクションを設定しておきます。
自ページを開く

そして、「ページの組み込み」の自動生成式は以下のような式を記述します。(画面でごめんなさいね。書くのめんどくさいんだよ)
ページの自動生成式

当然、「sub0」「sub1」「sub2」というXPageは作成しておく必要があります(実行する前であれば、いつ作成しても良いです)。

そして出来上がったサンプルを実行したのがこちら。
video


今回は動画にしてみました。コンボボックスの値を変更して、ボタンをクリックすると、下のページが切り替わるのがわかっていただけたでしょうか?

こちらもサブフォームと同様に動的に画面を生成することはできないようで、画面更新ではページが切り替わりませんでした。そのため、自ページを表示しなおすという事をしています。


ともあれ、XPagesでもサブフォームを挿入するような方法があるということがわかっていただければ、幸いです。



では、今日はこの辺で。


Web化するならXPages!






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



2 件のコメント:

Katoman さんのコメント...

動画で声が聞こえませんが。。。美声が聞きたいです。

Masahiko Miyo さんのコメント...

Katomanさん、コメントありがとうございます。
諸事情により、ただいま声がほとんど出ません(苦笑)。
そのため、今回は映像のみのお届けとなりました。
音声付き動画は・・・そのうちネタができたらやりますっ!