指定されたデータソースに対してビューの検索基準を設定します。
JSP構文
<jbo:ViewCriteria
id="viewCriteriaInstanceName"
datasource="datasourceId"
[ action="new | append" ]
>
<jbo:CriteriaRow .. . >
<jbo:Criteria .. . />
</jbo:CriteriaRow .. .>
</jbo:ViewCriteria>
説明
<jbo:ViewCriteria>データ・タグは、データソース・インスタンス用にビューの検索基準を表すオブジェクトを新規作成します。ビューの検索基準は、ビュー・オブジェクトの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処理されます。このため、ユーザーが異なる基準値で同じ行基準を再実行できるようにするには、更新する行基準を索引によって識別する必要があります。ビュー検索基準コンテキストで索引付けされた行基準を更新する方法の詳細は、<jbo:CriteriaRow>データ・タグを参照してください。
注意: データソースにすでにWHERE句が設定されている場合、ViewCriteriaデータ・タグは例外をスローします。
参照項目:
oracle.jbo.ViewCriteria
oracle.jbo.ViewObject
属性
append
で、ビュー基準の実行時には既存の行基準に新規の行基準を追加します。既存の行基準の定義を無視してビュー基準を作成するには、new
に設定します。例
次の例では、新規ビュー基準および行基準を作成するためにnewアクションを使用して、ビュー基準に追加します。ユーザーが「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>
次の例では、行基準を消去し、ビュー基準に対してappendアクションを使用して基準値をリセットします。ユーザーが「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>