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