サポート > リポジトリ > 検索制御 > [応用] 外部から検索条件をパラメータとして指定する

メールの文中などに、Wagbyの検索画面へアクセスするURLを埋め込む際、検索条件も同時にパラメータとして指定することができます。

画面の命名規則

Wagbyの検索画面は次の命名規則があります。

showListモデルID.do

「モデルID」部の表記はキャメル記法に従います。これは先頭を大文字とします。また、モデルIDにアンダースコア "_" が含まれていた場合、これを除去し、その次の文字を大文字とします。例えばモデルID が customer_order の場合は CustomerOrder になります。

拡張子 .do は、R6 との互換性のために残されています。R6 では Struts というミドルウェアを使っていたため、その名残です。

モデル customer の検索画面を開く場合、次の URL となります。

http://localhost:8921/wagby/showListCustomer.do
"localhost:8921" および "wagby" の部分は、ご利用の環境にあわせて適切に読み替えてください。

メール文中に上記 URL を記載して送信すると、受信者はそのリンクをクリックすることで、当該画面を直接、開くことができます。(正確には最初にログオン画面が開きます。認証後、メニュー画面ではなく直接、上記で指定した画面が開きます。)

モデル定義で検索条件を有効にした項目について、URLパラメータで指定することができます。

検索項目の命名規則

モデルID_cp$002f項目ID=値

ここで「モデルID_cp」と、接尾語 "_cp" が付与された表記は、検索条件を格納したことを意味します。

また、$002f は "/" 文字を意味します。これはモデルIDと、項目IDの区切りとなります。

Javaによるカスタマイズを行う開発者は「コンディションモデルの、プレゼンテーション表記」と解釈してください。

例1 値を設定する

モデルIDが customer の、検索条件 customerid に、値 1000 を指定する場合は次の表記となります。

http://localhost:8921/wagby/showListCustomer.do?customer_cp$002fcustomerid=1000

例2 日本語の値を設定する

日本語(を含む、英語以外の文字)をパラメータに渡す場合は、UTF-8 でエンコードした文字を渡します。 例えば customername が "やまだ" を検索する場合は、次のようになります。

http://localhost:8921/wagby/showListCustomer.do?customer_cp$002fcustomername=%e3%82%84%e3%81%be%e3%81%a0

UTF-8 でエンコードされた表記は、インターネット上に公開されているさまざまなサービスを用いて作成することができます。検索エンジンで "urlエンコード" で検索するとよいでしょう。

自動生成されたファイルから、パラメータ名を確認する

パラメータ名は、自動生成された JSP ファイルで確認し、コピー&ペーストするとよいでしょう。

wagbyapp/webapps/プロジェクト名/モデルID/ フォルダの中に「condition + "モデルID" + Cp.jsp」というファイルがあります。これをテキストエディタで開くと、次のようなコードが見つかります。

<tags:input_text name="customer_cp$002fcustomername" ... />

この name="..." の部分が、パラメータ名になります。

数値型項目や日付型項目の場合、開始と終了を指定できます。それぞれ次のようになります。

モデルID_cp$002f項目ID1jshparam
モデルID_cp$002f項目ID2jshparam

項目IDに接尾語 "1jshparam" が付与されたものが開始になります。"2jshparam" が付与されたものが終了になります。

モデル参照項目の場合は、内容部ではなくID部を渡します。パラメータ名の命名規則は次のとおりです。

モデルID_cp$002f項目ID$005b1$005d$002f$0040id

これは内部では「モデルID_cp/項目ID[1]/@id」という表記として扱われます。

例えば、顧客区分(のID部)が "1" の顧客を検索する場合のパラメータは次のようになります。

http://localhost:8921/wagby/showListCustomer.do?customer_cp$002fkubun$005b1$005d$002f$0040id=1

複数のパラメータは「&」で区切って表記します。この場合、内部では "かつ" (AND条件) として検索されます。

http://localhost:8921/wagby/showListCustomer.do?customer_cp$002fcustomername=%e3%82%84%e3%81%be%e3%81%a0&customer_cp$002fkubun$005b1$005d$002f$0040id=1
"または" (OR条件) には未対応です。将来の Wagby で対応する計画です。