詳細画面から検索画面への遷移
見積書モデルの詳細画面から、顧客モデルの検索画面へ遷移するボタンを用意した例を図1に示します。
ここでは「会社名」の値を検索条件として再利用しています。
このボタンを押すと、検索条件に会社名が渡された状態で、顧客モデルの検索処理が行われます。
図2では、検索と一覧を同一画面にまとめています。
定義方法
図1で示した「見積書モデル」で、「画面>その他>Javaソースコードの設定」を開きます。
ここで追加ボタンを次のように定義します。
項目 |
説明 |
入力例 |
画面名 |
どの画面にボタンを追加するかを指定します。ここでは"詳細表示画面"とします。 |
詳細表示画面 |
表示する |
有効にします。 |
(チェック) |
表示条件 |
常にボタンを表示する場合、本欄は空白とします。条件については"ボタン表示条件"をお読みください。 |
|
ボタン名 |
任意の名前を指定します。式で表現することもできます。 |
この会社で検索 |
イベント名 |
遷移した画面に対するイベントを指定します。[後述] |
Reset |
アクション名 |
遷移する画面を指定します。[後述] |
showListCustomer |
追加パラメータ |
遷移する画面へパラメータを指定することができます。[後述] |
companyname=${companyname} |
イベント名
画面毎に、受け取ることのできるイベントが用意されています。検索画面で受理できるイベントは次のとおりです。
イベント名 |
説明 |
Reset |
現在の検索条件をリセットし、外部パラメータを用いた検索処理を行います。今回のように外部からパラメータを渡す場合に有効です。 |
Search |
最初にセットされた検索条件を使います。このため二回目以降の外部パラメータはセットされません。これは検索画面と一覧表示画面を行き来するような画面遷移で、検索条件を保持するためのイベントです。 |
Search_Condition |
Searchと同様ですが、パラメータがない場合は空の検索条件が指定されたものとして扱います。 |
アクション名
モデルと画面の組み合わせから構成される文字列です。アドレスバー(URL)の一部になります。
検索と一覧表示画面は次のようになります。
"showList" + モデル名(キャメル記法)
このルールにより、モデル "customer" の検索一覧表示画面に対応するアクション名は "showListCustomer" になります。
拡張子は不要です。
追加パラメータ
検索画面に対して、直接、検索条件を渡すことができます。
書式は「キー=値」となっています。キー部分は(遷移先モデルの)項目IDになります。
値部分にプレースホルダ (${ ... }) を用いて、遷移元の項目の値を渡すことができます。
複数のパラメータを渡す場合は&で区切ります。
図2の動作を実現するための追加パラメータは次のようになります。イコールの左側は顧客モデルの項目で、今回は検索条件になります。イコールの右側は見積書モデルの項目です。
companyname=${companyname}
受ける側(検索条件)の初期値設定
受側のモデル(この例では顧客モデル)の当該項目について、「初期値 > 検索画面表示時」に REQUEST 関数を設定します。
制約
追加パラメータに記載する項目名に以下を指定することはできません。
- 繰り返し項目
- 繰り返しコンテナ項目
- このモデルに紐づく外部キー子モデル
モデル参照項目の扱い
図1,2の例は、顧客モデル内の「会社名」は文字列型でした。
続いて「会社モデル」と「顧客モデル」を分割した例を示します。顧客モデルの「会社名」は、会社モデルの主キーを保持する構造に変わります。(図5,図6)
実行
見積書における「会社名」は(文字列型から)モデル参照 - 参照連動 - となっています。このとき「この会社で検索」ボタンを押下すると、会社名コード (ID部) を渡しています。
モデル参照についても、パラメータが渡っていることが確認できます。(図8)
設定
見積書モデル
見積書モデルにおける「会社名」は参照連動です。参照連動の場合は標準で「内容部」を渡すようになりますが、今回は引数に「ID部」を渡すことが求められています。(顧客モデルの「会社名」がモデル参照となっているためです。)
そこで図3の見積書モデルの「追加パラメータ」を次のように修正します。"#id" を付与するとIDを渡すことができます。
#id表記の詳細は"画面遷移パラメータまとめ>モデル参照項目のルール"をお読みください。
companyname=${companyname#id}
顧客モデル
検索条件の初期値にコード(ID部)を設定するため、TOINT関数を適用します。
検索画面から検索画面への遷移
model2 の検索画面から model1 の検索画面へ遷移する例を説明します。ここで item1 は文字列型、item2 は数値型で範囲検索を有効としています。
model2の定義
model2 に用意したボタンの「追加パラメータ」は次のとおりです。
item1=${cond.item1}&item21jshparam=${cond.item21jshparam}&item22jshparam=${cond.item22jshparam}
- ${ と } で囲んだ(model2の)項目名について、検索条件を示す
cond.
を付与します。詳細...
- 範囲検索の場合、さらに項目名に "1jshparam" と "2jshparam" を付与します。それぞれ開始と終了を意味します。
model1の定義
item1の初期値
文字列型の項目 item1 の式を示します。上図の11で、同じ名前item1を使っているため、REQUEST関数の引数を省略しています。
タイミング |
式の種類 |
式 |
検索画面表示時 |
自動計算式 |
REQUEST() |
item2の初期値
数値型かつ範囲検索を有効としている項目 item2 の式を示します。数値型のため TOINT で囲んでいます。開始部分は item21jshparam となります。終了部分は item22jshparam となります。
タイミング |
式の種類 |
式 |
検索画面表示時 |
自動計算式 |
TOINT(REQUEST("item21jshparam")) |
検索画面表示時 (範囲検索の上限項目) |
自動計算式 |
TOINT(REQUEST("item22jshparam")) |
運用時の注意点
本設定を利用する場合、必ず model2 の検索処理を行なうようにしてください。(一度も検索処理を行わない場合、パラメータを渡すことはできません。)