ビュー基準に対してWHERE句の構造および実行オプションを指定します。
JSP構文
<jbo:CriteriaRow
id="criteriaRowId"
[ index="number rowIndex | -1" ]
[ uppercolumns="true | false" ]
[ clearall="true | false" ]
>
<jbo:Criteria . . . />
</jbo:CriteriaRow>
説明
<jbo:CriteriaRow>データ・タグは、ビュー基準インスタンス用に新規の行基準オブジェクトを作成します。個々の行基準は、ビュー・オブジェクトのWHERE句を定義します。このとき、1つの行基準には個々の属性に対する基準が含まれます。基準オブジェクトを使用して動的SQL文を作成します。<jbo:DataSource>データ・タグのwhereclause
属性では、単純にWHERE句をデータソースに追加しますが、このタグでは、より構造化した動的な方法でSQL問合せのWHERE句の作成が可能になります。
ビュー基準は、含まれる行基準および個々の基準のコンテキストを提供します。このコンテキストを使用するには、データソースおよびビュー基準インスタンスのIDをViewCriteriaデータ・タグで指定する必要があります。このため、CriteriaRowおよびCriteriaデータ・タグは、実際のデータソースが指定されるViewCriteriaタグ内で使用する必要があります。
JSPページを実行する際、個々の行基準オブジェクトに対して作成されるWHERE句は、データソースに対してOR処理で実行されます。したがって、データソースの値が複数の行基準に対する検索結果として返されると、その値はCriteriaRowデータ・タグの定義のどれか1つを満たしています。さらに、各行基準には、基準オブジェクトをAND処理で実行する複数のCriteriaデータ・タグの定義を含めることができます。このように、CriteriaRowおよびCriteriaの定義を使用することにより、データソースに対して、複雑で構造化された動的なWHERE句を作成できます。
JSPページの行基準に対しては、次のような指定が可能です。
または
action
属性をNew
に設定したViewCriteriaタグを使用しないかぎり、作成した行基準が常に追加され、生成されるWHERE句はビュー基準の前回の行基準の定義とともにOR処理されます。このため、ユーザーが異なる基準値で同じ行基準インスタンスを用いて、検索を再実行できるようにするには、index
属性を使用し、更新する行基準を索引によって識別する必要があります。行基準の索引を指定すると、個々の基準のデータ項目は次のルールに従って更新されます。
clearall
属性をTrue
に設定して行基準を定義すると、各基準のデータ項目の値は消去されます。
属性
-1
がすべての行基準に設定されます。false
で、大文字小文字を区別して検索します。大文字小文字を区別しない検索を実行する場合は、true
を入力します。false
です。既存の行基準を変更し、前の基準データ項目の値が実行するビュー基準に残らないようにする場合はtrue
を入力します。clearall
をtrue
に設定する場合は、行基準の索引を指定する必要があります。例
次の例では、ビュー基準を新規の基準行に追加します。ユーザーが「Search」または「Add Criteria」ボタンをクリックすると、Criteriaデータ・タグが、JSP編集フォームから検索を実行するための基準値を取得します。OnEventデータ・タグが使用されているJSPページは、生成されたイベントを処理し、基準値を受け取ります。
<jbo:OnEvent list="Search, Add Criteria" > <% String rowParam = params.getParameter("nRows"); int nRows = 0; if (rowParam != null) { try { nRows = Integer.parseInt(rowParam); } catch (Exception ex) { } } %> <jbo:ViewCriteria id="vc" datasource="ds" action="new"> <% for (int index=0; index < nRows; index++) { %> <jbo:CriteriaRow id="row<%=index%>" > <jbo:AttributeIterate id="attrvc" datasource="ds" queriableonly="true"> <% String item = attrvc.getName(); String value = params.getParameter("row" + index + "_" + item); %> <jbo:Criteria dataitem="<%=item%>" value="<%=value%>" /> </jbo:AttributeIterate> </jbo:CriteriaRow> <% } %> </jbo:ViewCriteria> </jbo:OnEvent>
次の例では、ビュー基準で基準行を消去します。ユーザーが「Delete Criteria」ボタンをクリックすると、CriteriaRowデータ・タグが、JSP編集フォームにより送信された入力パラメータで指定される索引を使用します。OnEventデータ・タグが使用されているJSPページは、生成されたイベントを処理し、基準行を消去します。
<jbo:OnEvent name="Del Criteria" > <% String remove = params.getParameter("index"); %> <jbo:ViewCriteria id="vc" datasource="ds" action="append"> <jbo:CriteriaRow id="row<%=remove%>" index="<%=remove%>" clearall="true" /> </jbo:ViewCriteria> </jbo:OnEvent>