選択肢モデル
最終更新日: 2022年10月31日
R8 | R9
データを登録・検索する時の入力方式のひとつとして、テキスト入力のほかに
通常、選択肢モデルはリストボックス、ラジオボタン、チェックボックスのいずれかの方式で利用します。
選択肢モデルは、モデル項目として以下の項目があらかじめ定義されています。
「業種」情報を格納する選択肢モデルの作成例です。
以上で、選択肢モデルの作成は完了です。
左端の「No.」は固定(連番)です。画面表示に用いられるのみで、データベースには格納されません。
選択肢の値はアプリケーションの運用開始後でも追加・変更が可能です。 初期データは1件以上、用意してください。(1件も用意しない、ということはできません。) 「内容」を空白にすることはできません。(スペースだけの文字列も空白と扱われます。すなわち、内容部が空、という選択肢を用意することはできません。) 選択肢モデル「業種」を他モデル「顧客」で参照する例です。
それぞれの実装プレビューは下表の通りです。
選択肢の表示順を決めるルールを設定できます。デフォルトは「ID」の「昇順」です。
①のソートルールで「表示優先度項目」を指定した場合、ここでソート条件となるモデル項目を指定します。
「無効な選択肢」と判断する条件(モデル項目)を指定します。
選択肢の値は、運用中に追加・変更することができます。
選択肢(初期データ固定)の場合は運用中の変更は行えません。WagbyDesignerで初期データを変更した場合は、再ビルドを行ってください。
選択肢の表示順は以下の手順で運用中に変更できます。
Wagbyでは、運用中に選択肢を物理削除することを推奨していません。
「有効期限」欄に登録する文字列について
日付形式の文字列(yyyy/MM/dd)を利用した以下の書式を指定することで、選択肢の有効期間を設定できます。
日付書式は "yyyy/MM/dd" です。 yyyy-MM-dd形式ではありません。"-" は、開始日付と終了日付の区切り文字として使われます。
無効な選択肢を表すマーク(-)は、変更することができます。
選択肢の表示画面には、無効にした選択肢が表示されなくなります。
こちらも登録画面と同様、無効にした選択肢は表示されません。
無効な選択肢が設定されたデータの更新画面では、無効な選択肢も表示されます。
無効な選択肢は検索画面には表示されないため、通常は検索条件として指定できません。
選択肢が物理削除された場合、その選択肢を設定しているデータの詳細表示画面には「存在しないデータ」と表示されます。
この「存在しないデータ」という文言は、次の手順で変更することができます。
選択肢モデルを参照する側(ここでは「顧客」モデル)の項目では、選択肢モデルの主キー(ID)の値を保持します。
入力タイプ「チェックボックス」を用いた場合は複数の選択肢(ID)を保持するため、専用のテーブルが作成されます。詳細...
「選択肢モデル(初期データ固定)」は、運用中に選択肢を変更することができません。
初期データ固定の選択肢モデルには、次のルールが適用されます。
選択肢モデルとは
セレクトボックスやラジオボタンのような、「用意された選択肢の中から選ぶ」方式があります。
都道府県や血液型など、登録したいデータがいくつかの候補に特定できるような情報は、図のようにテキスト入力ではなく選択方式になっていたほうが便利です。
項目名 項目ID 型 役割
主キー id 数値
文字列
日付・時刻主キー
内容 content 文字列 選択肢として表示される内容
表示優先度 priority 数値 選択肢の並び順を設定できる。
(数値の降順で表示される)
有効期限 valid 文字列 値がセットされていた場合には無効扱いとなる
重要
選択肢モデルの作成方法
モデル一覧画面のギアアイコン > テンプレート の中から
・「選択肢モデル」
・「選択肢モデル(初期データ固定)」
のいずれかを選択します。
タイプ 特徴 使い方
選択肢モデル
アプリケーション上でデータの追加・変更可能
=運用中に選択肢を追加変更できる
運用開始後も内容の変更・追加が想定される選択肢の実装
選択肢モデル(初期データ固定)
アプリケーション上でのデータ変更不可
=運用中は変更できない
(再ビルドが必要)
血液型や都道府県など、内容変更が不要な選択肢の実装
モデル項目はあらかじめ用意されているため、定義は不要です。
選択肢モデルは通常のモデルとは異なり、初期値(初期データ)を設定することができます。
「初期データ」タブをクリックすると、初期データの設定画面が表示されます。
「ID」が主キーとなります。
の「新規」をクリックします。
ワンポイント
詳細は「運用中に選択肢を追加する」にて説明しておりますのでそちらをご覧ください。
重要
注意
選択肢モデルの参照方法
モデル項目「業種」の型として「他モデルの項目参照」を選択します。
「他モデルの項目参照」を選択すると「モデル項目の型詳細設定」ダイアログが開きます。
参照先モデル項目は、「内容(content)」を指定します。
入力タイプのうち、以下3種が選択形式です。
入力タイプ名
プレビュー
リストボックス
選択肢の他に「(未選択)」 という値がデフォルトで用意されます。
これは何も選択していない状態を示します。
「(未選択)」 を非表示にする方法はこちらをご覧ください。
ラジオボタン
項目名の横にある消しゴムボタンをクリックすると、未選択状態になります。
チェックボックス
項目名の横にあるチェックボタンをクリックすると、全選択肢にチェックが入ります。
全選択状態でクリックした場合、すべての選択状態が解除されます。
選択肢に関する設定は下図の①~③です。
①ソートルール
各設定項目の説明は以下の通りです。
後から選択肢の並び順を変更したいような場合には、あらかじめこちらを選択してください。
※②が未設定の場合、「主キー(ID)の昇順」となります。
②表示優先度項目
指定する項目の型は数値(整数)である必要があります。
※①で「表示優先度項目」を選択していない場合はここで指定した内容は適用されません。
③無効判定項目
ここで指定したモデル項目に何らかの値が格納された場合に「無効」とみなされます。
無効とみなされた選択肢は画面に表示されません。
運用中に選択肢を追加する
以下は、選択肢モデルの一覧更新画面より追加・変更する手順です。
重要
選択肢の表示順を変更する
選択肢を無効にする
選択肢はさまざまなモデルから参照される性質を持っており、データを削除するとデータ上で不整合が発生するおそれがあるためです。
その代わりに、選択肢を無効にする(論理削除)ことができます。ここでは、その方法を説明します。
ここに何らかの文字が含まれていた場合、データは無効になります。
ワンポイント
上図の例では、「前期で終了」という文字列を登録しています。
有効期限項目は文字列型のため、無効にすると同時に「無効にした経緯」や「いつ無効としたか」等、メモを残すことができます。
有効期限(valid)の特別な書式
有効期限の設定値(例)
仕様
2020/1/1-2020/12/31
2020/1/1 から 2020/12/31 まで有効
例:本日が 2020/7/1 の場合は有効。本日が 2021/1/1 の場合は無効となる
-2020/12/31
2020/12/31 まで有効
例:本日が 2020/7/1 の場合は有効。本日が 2021/1/1 の場合は無効となる。
2020/1/1-
2020/1/1 から有効
例:本日が 2020/7/1 の場合は有効。本日が 2019/12/31 の場合は無効となる。
2020/12/31
2020/12/31 のみ有効
例:本日が 2020/12/31 の場合は有効。それ以外の日であれば無効となる
2020/12/31 無効
2020/12/31 のみ有効
つまり "無効" の文字の有無にかかわらず、"2020/12/31" という表記が解釈され、上と同じ動作になる。
無効(2020/12/31)
日付は無視される。一切の有効期間は存在しない。
注意
これは「現在は無効の選択肢データを参照している」ことを意味します。
ワンポイント
変更方法はこちらをご覧ください。
登録画面
検索画面
更新画面
無効な選択肢を示すマークを変更する
無効な選択肢も検索対象とする
しかし、以下の設定を行うことで無効な選択肢を指定した検索が可能になります。
参照先モデルのデータが削除されていた場合
横の数字は削除された選択肢の主キーの値を示しています。
このファイルを customize/resources フォルダに保存します。
__jfc_common.data.noexist=XXX
データベース内部の詳細
内容(content)は保持されません。
選択肢モデル(初期データ固定)
固定値として扱われるため、内部ではテーブルを作成せず、メモリ上で管理されます。
- テーブルを作成しない。
- キャッシュを無効とする。(常にメモリ上の値を使うため)
-
詳細画面、登録画面、更新画面、ダウンロード画面、アップロード更新画面、一覧更新画面は作成されない。
(データ固定につき、運用中の値の追加・変更・削除は行えない) -
ただし、一覧表示画面はWagbyDesignerより追加できる。
(下図は初期データ固定のモデル「血液型」の一覧表示画面を追加する例)初期データ固定のモデル「血液型」の一覧表示画面をメニューに追加 -
一覧表示画面では、検索条件部は表示されず、下図のように常に一覧表示となる。
選択肢モデル(初期データ固定)の一覧表示画面 - 一覧表示画面の1ページあたりのデータ表示件数は100件。
- 他モデルの参照 > 他項目の値で選択肢を絞り込む 設定に用いることはできない。
- 「モデル参照(検索画面)」として用いる場合、メインウィンドウの入力値を検索条件として再利用する指定を行うことはできない(検索条件は無視される)。
注意
本設定は「選択肢モデル」のみで利用できます。(通常のモデルでは利用できません。)
設計上の注意点
初期データ固定とした場合、内部では一切のデータベース操作を無効として扱います。
前述したルールの通り、システム稼働中のデータの追加、更新、削除は行えません。
検索も検索条件を指定した絞り込みは行えず、常に全件のデータを取得します。
そのため、次の設定と組み合わせることはできません。
- 外部キー
- メインモデルまたはサブモデル
- 全文検索
- ワークフロー
- 楽観ロック
- カレンダビュー、集計ビューをはじめとする各種ビュー
- 暗黙条件
- データ権限
- この選択肢モデルのIDをキーに、自身のモデルの項目(内容、表示優先度など)を参照連動するような使い方
これらの制約から、本設定は選択肢としての初期データとして扱うのみとしてご利用ください。
運用上の注意点
- 選択肢モデルに項目を追加することはできません。同様に、用意されている項目を削除することもできません。
- 「テーブルを作成しない選択肢モデル」をサブデータベースで用意することはできません。
仕様
- アプリケーション起動時に WEB-INF\export\init\<モデルID> フォルダ内に格納されている xml ファイルを読み込み、メモリに格納します。
入力フィルタ
選択肢モデルの内容(content)項目の入力フィルタには「文字列(一般)」が設定されています。
そのため、WagbyDesigner上での初期データ登録時でも、全角文字は半角文字に変換されます。
この設定は次の手順で変更することができます。
入力フィルタの変更手順
-
選択肢モデルの編集画面を開き、ギアアイコン
より「詳細定義一括設定」をクリックします。
モデル定義画面 -
カテゴリ欄で「入力制御」を選択し、リポジトリキー欄に「@filter」または「入力フィルタの選択」と入力します。
入力すると、下図のようにリポジトリキー欄に「model/modelitem/@filter:入力フィルタの選択」が表示されます。
これを選択します。モデル項目詳細一括定義ダイアログ -
変更対象の「内容」行の左側のチェックボックスにチェックを入れ、設定値のリストボックスから任意のフィルタを選択します。
選択したら、右下の「保存」ボタンをクリックします。モデル項目詳細一括定義ダイアログ - 更新確認ダイアログで「はい」をクリックすると、変更が完了します。