2024年6月24日月曜日

Oracle APEX標準の動的コンテンツを使って画像を表示する

htmx、Turbo Frames、Unpolyを使って画像を表示するAPEXアプリケーションを作成してきましたが、画像を表示する程度であれば、Oracle APEXの標準機能である動的コンテンツ・リージョンでできることを思い出しました。

以下よりOracle APEX標準の動的コンテンツを使用した実装を紹介します。

今回作成したアプリケーションも今までと同じく、見かけはhtmxを使ったものと同じです。


以下よりアプリケーションについて簡単に紹介します。

リージョンImageタイプ動的コンテンツに変更し、ソースCLOBを返すPL/SQLファンクション本体として以下を記述します。


画像の選択をするために、ページ・アイテムP1_ANIMALを作成し、送信するページ・アイテムとして設定します。


ページ・アイテムP1_ANIMALタイプ非表示とします。動的アクションで値を設定するため、設定保護された値オフにします。


ボタンを押した時に実行するTRUEアクションとして、最初に値の設定を実行します。設定タイプの設定静的割当てを選択し、に表示する動物のなまえを指定します。影響を受ける要素選択タイプアイテムアイテムとしてP1_ANIMALを選択し、静的に割り当てた値をページ・アイテムP1_ANIMALに設定します。初期化時に実行オフにします。


続いて、リージョンImageのリフレッシュを実行します。影響を受ける要素選択タイプリージョンリージョンImageです。こちらも初期化時に実行オフにします。


動的アクションは3つあるので、値の設定たぬきシマウマレッサーパンダをそれぞれのアクションに設定します。

Oracle APEX標準の動的コンテンツを使った実装の紹介は以上になります。動的コンテンツによる実装の場合は、RESTサービスを作成する必要はありません。

WebSocketやSSEなどOracle APEX単体では実装が困難な機能もあります。そのような場合に、htmxやTurbo Frames(実際にはTurbo Streams)、Unpolyといったライブラリは実装の助けになるでしょう。

今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/sample-dynamic-contents.zip

Oracle APEXのアプリケーション作成の参考になれば幸いです。