ビュー基準に対してWHERE句の構造および実行オプションを指定します。
JSP構文
<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
に設定した場合は、行基準索引を指定する必要があります。
例
次の例では、ビュー基準を新規の基準行に追加します。ユーザーが「Search」または「Add Criteria」ボタンをクリックすると、<jbo: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, 2006, Oracle. All rights reserved.