ビュー基準に対してWHERE句の構造および実行オプションを指定します。
<jbo:CriteriaRow
id="criteriaRowId"
[ index="number rowIndex | -1" ]
[ uppercolumns="true | false" ]
[ clearall="true | false" ]
>
<Criteria . . . />
</jbo:CriteriaRow>
<jbo:CriteriaRow>
データ・タグは、ビュー基準インスタンス用に新規の行基準オブジェクトを作成します。個々の行基準は、ビュー・オブジェクトのWHERE句を定義します。このとき、1つの行基準には個々の属性に対する基準が含まれます。基準オブジェクトを使用して動的SQL文を作成します。 <jbo:DataSource>
データ・タグのwhereclause
属性では、単純にWHERE句をデータソースに追加しますが、このCriteriaデータ・タグでは、より構造化した動的な方法でSQL問合せのWHERE句の作成が可能になります。
ビュー基準は、含まれる行基準および個々の基準のコンテキストを提供します。 このコンテキストを使用するには、データソースおよびビュー基準インスタンスのIDを<jbo:ViewCriteria>
データ・タグで指定する必要があります。 このため、<jbo:CriteriaRow>
および<jbo:Criteria>
データ・タグは、実際のデータソースが指定される<jbo:ViewCriteria>
タグ内で使用する必要があります。
JSPページを実行する際、個々の行基準オブジェクトに対して作成されるWHERE句は、データソースに対してOR処理で実行されます。 したがって、データソースの値を複数の行基準に対する検索結果として返すには、その値がCriteriaRowデータ・タグの定義の1つのみを満たしている必要があります。さらに、各行基準には、基準オブジェクトをAND処理で実行する複数のCriteriaデータ・タグの定義を含めることができます。 このように、CriteriaRowおよびCriteriaの定義を使用することにより、データソースに対して、複雑で構造化された動的なWHERE句を作成できます。
JSPページの行基準に対しては、次のような指定が可能です。
または
action
属性をnew
に設定した<jbo:ViewCriteria>
タグを作成しないかぎり、作成した行基準が常に追加され、生成されるWHERE句はビュー基準の前回の行基準の定義とともにOR処理されます。 このため、ユーザーが異なる基準値で同じ行基準を再実行できるようにするには、index
属性を使用して、更新する行基準を索引によって識別する必要があります。行基準の索引を指定すると、個々の基準のデータ項目は次のルールに従って更新されます。
clearall
属性をTrue
に設定して行基準を定義すると、各基準のデータ項目の値は消去されます。
-1
がすべての行基準に設定されます。
false
で、大文字小文字を区別して検索します。大文字小文字を区別しない検索を実行する場合は、true
を入力します。
false
です。既存の行基準を変更し、前の基準データ項目の値が実行するビュー基準に残らないようにする場合はtrue
を入力します。 clearall
をtrue
に設定する場合は、行基準の索引を指定する必要があります。
次の例では、ビュー基準を新規の基準行に追加します。 ユーザーが「検索」ボタンまたは「基準の追加」ボタンをクリックすると、Criteriaデータ・タグが、JSP編集フォームから検索を実行するための基準値を取得します。 <jbo: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編集フォームにより送信された入力パラメータで指定される索引を使用します。 <jbo: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>
Copyright © 1997, 2004, Oracle. All rights reserved.