ビジネス・コンポーネント・データ・アクセス・タグ - <jbo:ViewCriteria>

指定したデータ・ソースについて検索のビュー基準を設定します。

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を<jbo:ViewCriteria>データ・タグで指定する必要があります。このため、CriteriaRowとCriteriaの各データ・タグは、実際のデータ・ソースが指定される<jbo:ViewCriteria>タグの本体に記述します。

JSPページの実行時に、各行基準オブジェクトに対して作成されたWHERE句が、ORの方法でデータ・ソースに対して実行されます。このため、データ・ソースの値が複数の行基準に対する検索結果として返されるには、複数のCriteriaRow定義の1つを満たせばよいことになります。また、各行基準には基準オブジェクトをANDの方法で実行する複数のCriteria定義を含めることができます。CriteriaRowとCriteriaの定義を組み合せることにより、複雑に構造化された動的なWHERE句をデータ・ソースに対して設定できます。

JSPページのビュー基準で、次の条件を指定できます。

<jbo:ViewCriteria>タグのaction属性をNewに設定して作成しないかぎり、作成した行基準は常に追加され、作成されたWHERE句はビュー基準の以前の行基準の定義を使用したORの方法になります。このため、同一の行基準を異なる基準値を使用してユーザーに再度実行させる場合は、更新する行基準を索引に基づいて識別する必要があります。ビュー基準のコンテキストで索引付きの行基準を更新する方法の詳細は、<jbo:CriteriaRow>データ・タグを参照してください。

注意: <jbo:ViewCriteria>データ・タグは、データ・ソースが常にWHERE句を設定されている場合に例外を戻します。

関連資料:
oracle.jbo.ViewCriteria
oracle.jbo.ViewObject

属性

次の例では、新しいビュー基準および基準行を作成し、新規アクションを使用してビュー基準に追加しています。ユーザーが「検索」または「基準の追加」ボタンをクリックすると、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>        

次の例では基準行を消去し、ビュー基準で追加アクションを使用して基準値をリセットします。<jbo: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>