ラベルの表示内容を動的に決定する

最終更新日: 2023年12月18日
R8 | R9

値を参照する方法9.1.7/9.2.3

項目のラベル部は次の設定欄で指定します。(指定がない場合、Designerで設定した「項目名」が使われます。)

  • 出力制御 > 詳細画面 > スタイル > ラベルの表示内容
  • 出力制御 > 一覧画面 > スタイル > ラベルの表示内容
  • 検索制御 > スタイル > ラベルの表示内容

通常、この設定欄には固定文字列を記述しますが、特別表記として次の書き方ができます。

特別表記 対応するバージョン
${項目ID} ${item1} R9.1.7〜/R9.2.3〜
ATTRIBUTE("キー") ATTRIBUTE("vlabel") R9.1.7〜/R9.2.3〜
SESSION("キー") SESSION("vlabel") R9.2.3〜

${項目ID}

DB非保存かつ隠しとなる文字列型の項目を用意します。式や初期値設定で値を設定してください。この値がラベル部に使われます。

ATTRIBUTE("キー")

スクリプトを使います。例えばスクリプトで次のように記述します。

p.request.setAttribute("vlabel_title", "テスト");

Designerの設定欄にATTRIBUTE("vlabel_title")と記述すると、スクリプトで設定された値が参照されます。

スクリプトの設定タイミングは次の箇所が適切です。

  • ストアモデルからプレゼンテーションモデルへの変換(登録/更新/表示)
  • コンディションモデルからコンディションのプレゼンテーションモデルへの変換 (検索)

注意点

  • キー部分にピリオド "." は使えません。
  • キー名はすでにWagby内で使っているものを上書きすることはできません。区別するために接頭語を決めるとよいです。例:vlで始める、など。

SESSION("キー")

ログオン時に実行されるスクリプトを使います。例えばスクリプトで次のように記述します。

p.request.getSession().setAttribute("vlabel_title", "テスト");

Designerの設定欄にSESSION("vlabel_title")と記述すると、スクリプトで設定された値が参照されます。

注意点

  • キー部分にピリオド "." は使えません。
  • キー名はすでにWagby内で使っているものを上書きすることはできません。区別するために接頭語を決めるとよいです。例:vlで始める、など。

実行例

顧客名によってラベル部を切り替えた例を示します。顧客名が未入力のときは "備考" という固定文字としています。

備考項目のラベル (1)

顧客名を入力すると(画面が再描画され)ラベル名が変わります。

備考項目のラベル (2)

設定方法

サンプルで用意した顧客モデルです。今回は最後の「備考」という項目のラベル設定を行います。

顧客モデル

新しく「備考のラベル名」という項目を用意します。

備考ラベルの値を保持する項目を用意する

この項目はデータベース保存なしで、計算式によって値を制御するとします。

計算式でラベル名を決定する

この項目は入力、出力時は隠し項目とします。入力時の隠し項目設定を行う方法を示します。

入力時の隠し項目設定

「顧客名称」項目入力時、画面の再描画設定を行います。これによって入力後、ラベル部が書き換えられます。

画面再描画の設定

「備考」項目のラベル表示内容に ${LABELNOTE} と指定します。これによって項目の値が使われるようになります。

項目の値をラベル部に利用する

設定のポイント

  • ラベルの値を保持する項目はデータベース保存なしの隠し項目とするとよいでしょう。
  • 一覧表示の項目にも同じような設定を行う場合、ラベルの値を保持する項目を一覧表示に含めるようにしてください。これを忘れると表示エラーになります。(一覧表示項目を隠し項目と設定することができます。)
  • 入力値を使うのではなく、何らかの計算によってラベル内容が定まる場合は、入力項目の画面再描画設定は不要になります。

代用ラベルを使う方法

R9.0.0〜R9.1.6およびR9.2.0〜R9.2.2までのバージョンをご利用の場合は、設定の組み合わせで実現します。実行例と設定方法を説明します。

実行例

登録画面の "テストラベル" という表示は、項目ラベルのように見えますが、実際は値部分になっています。(元々のラベル部は非表示としています。)

値部分をラベルのように表示させている

詳細画面も同じような設定を行なっています。

詳細画面

設定方法

サンプルのモデル定義を示します。ここで item1 は自身のラベルを非表示とし、内容部を (item2の) のラベルのように振舞わせます。item2 もラベルを非表示とします。

ラベルの代用となるitem1と、値が格納されるitem2を定義する

モデル項目詳細定義ダイアログを開きます。"詳細 > 自動計算" でラベル文字を返すようにします。ここでは単なる文字列を返していますが、ここで式を適切に指定することで、条件によって文字列の内容を変更することができます。

また、この項目はラベルの代用となるため、データベースに保存する必要はありません。

計算式でラベル文字を設定する

item1 項目(ラベルの代用) は "出力制御 > 詳細画面 > スタイル" で、元々のラベルを表示しないとします。また CSS クラス名に "display_label" と指定します。これは Wagby の標準でラベル部に適用される CSS です。

出力制御のスタイル設定

同じく入力制御のスタイルも設定します。ラベル部分の文字を太字とするため、CSS で "font-weight:bold" を指定します。

入力制御のスタイル設定

item1 をラベルとして使うため、item2 項目のラベルを非表示とします。

item2のラベルを非表示とする

レイアウトを設定します。item1とitem2をグループに格納します。最初に「追加」ボタンを押下してグループを作成し、ドラッグ&ドロップ走査で、項目をグループに含めます。両者を横並びとし、標準的な表示比率である "25%,75%" を指定します。

レイアウトの設定