定義されたサーバー側の条件がFALSEと評価される場合に、ボタンまたはメニュー・エントリを非表示にするのではなく、無効としてレンダリングするかどうかを指定します。
以下のようにページを作成し、ページ・アイテムP1_ITEM1とP1_ITEM2の間にボタンBUTTONを配置します。
APEX 26.1で新たに追加された無効として表示をオンにすると、サーバー側の条件がfalseのときに、ボタンは無効の状態で表示されます。ページのレイアウトは変わりません。
サーバー側の条件でボタンを除外するのは、単に無効にするだけではなく、ボタンに紐づけた動作の呼び出しをブラウザから直接実行されるのを防ぐ効果があります。ボタン要素がページ上に存在しないので、JavaScriptコンソールから直接呼び出してクリックすることはできません。
レイアウトを崩さないようにするため、サーバー側の条件の代わりにページ・ロード時にボタンを無効化する動的アクションを作成できます。
このようにした場合、以下のように表示上は同じであり、ボタンはクリックできなくなっています。
document.getElementById("myButton").click();
ボタンの外観の無効として表示をオンとし、サーバー側の条件がfalseのときに表示されているボタンは、ボタンとして有効化しても、アクションを呼び出すことはできません。
ボタンを有効化すると見た目は有効に見えるようになりますが、画面上でボタンをクリックしても、JavaScriiptでclick()を呼び出しても、ボタンに紐づいたアクションは呼び出されません。
JavaScriptコンソールから以下を実行しても、動作しません。
document.getElementById("myButton").click();
サーバー側の条件による除外で期待されているセキュリティ面での要件を満たしつつ、ページ・レイアウトは崩さない設定になっています。
簡単なアプリケーションですが、動作確認に使用したAPEXアプリケーションのエクスポートを以下に置きました。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完









