次のようなビュー・オブジェクトに基づいてデータ・ソース・インスタンスを作成します。
指定したアプリケーション・モジュールにすでに存在する。
<jbo:CreateViewObject>
データ・タグを使用して動的に作成した。
JSP構文
<jbo:DataSource
id="dataSourceInstanceName"
appid="appModuleInstanceName"
viewobject="viewObjectName"
[ whereclause="filterString" ]
[ orderbyclause="orderbyString" ]
[ rangesize="number of rows displayed | -1 | 1" ]
[ forwardonly="true | false" ]
[ itermode="LastPagePartial | LastPageFull" ]
/>
注意: コンポーネント・パレットを使用して<jbo:DataSource>
タグをJSPページ内にドロップした場合、すべての属性が表示されるわけではありません。このタグの「属性」ダイアログには、変更できる属性のみが表示されます。その他の属性の値は、次の属性セクションで説明するように、アプリケーションから取得されます。
説明
<jbo:DataSource>
タグは、ビジネス・コンポーネントAPIを介してビジネス・コンポーネント・データ・ソース(ビュー・オブジェクト)インスタンスを操作する場合に、スクリプト可能変数として使用できるデータ・ソース・インスタンスへのハンドルを提供します。次に例を示します。
<jbo:DataSource id="ds"
appid="Mypackage1Module" viewobject="EmpView1" /> <%
RowSet rs = ds.getRowSet(); Row currentRow = rs.getCurrentRow(); %>
注意: バージョン9.0.3より前のJDeveloperでは、ビジネス・コンポーネントJSPページは<jbo:DataSource>
タグに排他的に依存してビュー・オブジェクトへのデータ・バインディングを取得していました。生成されるデータ・ソースIDは、行セットおよび属性を操作するために、<jbo:RowsetIterate>
や<jbo:ShowValue>
など、他のデータ・タグのdatasource
属性によって参照されていました。JDeveloperバージョン9.0.3以降では、ビジネス・コンポーネント・データ・タグが必要とするdatasource
属性のビュー・オブジェクト・インスタンス名を入力できます。このようにビュー・オブジェクトにデータ・ソースとして直接名前を付けられるため、<jbo:ViewObject>
タグおよび<jbo:DataSource>
タグをJSPページ内で使用する必要はなくなりました。
関連項目: oracle.jbo.DataSource
属性
id: <jbo:DataSource>
タグによって作成されるデータソースのインスタンスの名前。割り当てる名前は、ページ内で一意である必要があります。これには、任意の有効なJava識別子を使用できます。スクリプトレット内では、このIDをoracle.jbo.html.DataSource
型のスクリプト可能な変数として使用できます。
appid: <jbo:ApplicationModule>
データ・タグを使用して指定したデータ・アプリケーションID。この値はプロジェクトの.cpx
ファイルから取得されるため、「属性」ダイアログには表示されません。ただし、この値は、<jbo:ApplicationModule>
タグ自体に表示されているIDと一致するように変更する必要があります。
viewobject: ビジネス・コンポーネント・プロジェクトに表示する際に使用するビュー・オブジェクトのフルネーム。アプリケーション・モジュールによって定義された既存のビュー・オブジェクト、または<jbo:CreateViewObject>
データ・タグを使用して作成したビュー・オブジェクトを指定できます。ビュー・オブジェクト名は、アプリケーション・モジュールIDを使用して指定する必要があります(appmodId.viewobjectName
)。この値は、「属性」ダイアログよりも優先されるダイアログでの選択内容に基づいて取得されるため、「属性」ダイアログには表示されません。
whereclause: オプション。ビュー・オブジェクトでWHERE句を設定し、行セットを制限します。これは標準のSQL句です。
注意: WHERE句に指定する列名には、データベースの列名は使用できません。ビュー・オブジェクトの属性定義のColumnNameForQuery
プロパティによって定義されている名前を使用する必要があります。ColumnNameForQuery
値を取得するには、<jbo:ShowDefinition>
データ・タグを参照してください。
orderbyclause: オプション。ビュー・オブジェクトでORDERBY句を設定し、行のソート方法を指定します。これは標準のSQL句です。
注意: ORDERBY句に指定する列名には、データベースの列名は使用できません。ビュー・オブジェクトの属性定義のColumnNameForQuery
プロパティによって定義されている名前を使用する必要があります。ColumnNameForQuery
値を取得するには、<jbo:ShowDefinition>
データ・タグを参照してください。
行を昇順または降順にソートするには、次の方法があります。
式: 式の値に基づいて行をソートします。
たとえば、次の文は、従業員ビュー・オブジェクトからすべての営業担当者のレコードを選択し、結果を歩合給別に降順ソートする方法を示しています。
ORDER BY comm DESC
位置: 選択リストのこの位置にある式の値に基づいて行をソートします。位置によるソートは、式が長い場合に役に立ちます。選択リストから式全体をコピーするのではなく、その位置を指定できます。
たとえば、次の文は、従業員ビュー・オブジェクトから従業員を選択し、順序位置を使用して最初に部門別に(昇順)ソートしてから給与別に(降順)ソートする方法を示しています。
ORDER BY 2 ASC, 3 DESC
rangesize: オプション。ビュー・オブジェクトからフェッチする範囲内の行数。これは、行セット全体を処理する必要がない場合に役に立ちます。範囲により、データソースの行のサブセットにアクセスするためのウィンドウを効率的に定義できます。行セットが大きく、すべての行をクライアントに読み込む必要がない場合や、ページに一定数の行を表示する場合、範囲が役に立ちます。デフォルトでは、rangesizeは、1行(値1
)に設定されています。この値を-1
に設定すると、すべての行がフェッチされます。
forwardonly: オプション。ビュー・オブジェクトによって行が順次アクセスされるようにするかどうかを指定します。デフォルトはfalse
です。この場合、ユーザーはビュー・オブジェクトのデータを変更できます。true
に設定すると、順方向のみモードにより、現在の行より前にある行を新しい現在の行として指定できなくなります。行を迅速に反復し、行をより速く取得する必要がある場合は、true
に設定します。ユーザーによる行データの編集や行のナビゲートを許可する場合(DataScrollerコンポーネントを使用する場合など)、順方向のみのモードは適していません。
注意: データソースに対して順方向のみのモードが有効である場合、ビジネス・コンポーネント・データ・コンポーネント・タグを使用するJSPページではランタイム・エラーがスローされます。ビジネス・コンポーネントのデータ・コンポーネント・タグをJSPページに追加する場合は、forwardonly
をfalse
(デフォルト)設定のままにする必要があります。
itermode: オプション。ユーザーが行セットの最後の行範囲を表示しようとしたときの行セットの表示動作を決定します。ユーザーが行セットの全範囲の行のみを一度に表示できるようにするには、LastPageFull
と入力します(このモードの場合、完全に移入されたページが表示されます)。なお、デフォルト値のLastPagePartial
の場合、ユーザーは、範囲サイズとは関係なく行セットの最後に移動できます。デフォルトの部分ページ・モードを使用する場合、最終ページのサイズが、以前に表示したページ(常に範囲サイズによって制御されています)とは異なる場合があります。
注意: 最終ページの部分モード(デフォルト)は、ページ内で一定数の行セットが処理されるWebクライアントの場合に役に立ちます。最終ページの完全モードでは、ページ内の行数が必ずしも一定しているとはかぎりません。行セットの最後に達した場合、ページが自動的に調整され、範囲サイズより少ない行数でスクロールされる場合があります。これら2つのモードのもう1点の違いは、最終ページで行が削除された場合です。最終ページの完全モードでは、範囲が最後に達したときに範囲内の行を削除すると、範囲を完全に保つために最上位の行が読み込まれます(存在する場合)。最終ページの部分モードでは、最上位の行は読み込まれません。ページの最後の行が削除されると、範囲サイズによって上にスクロールされます(ページ・アップ)。最終ページの動作の詳細は、oracle.jbo.RowIterator
Javadocを参照してください。
例
<jbo:DataSource id="category_vo" appid="OnlineOrdersModule" viewobject="CategoryView" />
<jbo:DataSource
id="customer_vo1" appid="OnlineOrdersModule"
whereclause="<%= wc %>"
viewobject="CustomerView" />
さらに詳細な例を次に示します。
<%@ taglib uri="/webapp/DataTags.tld" prefix="jbo" %>
<jbo:ApplicationModule id="OnlineOrdersModule"
configname="OnlineOrders.OnlineOrdersModule.LocalConfig"
releasemode="Stateless" />
<jbo:DataSource id="ds1" appid="OnlineOrdersModule" whereclause="id > 206" rangesize="20" viewobject="CustomerView" />
<jbo:RowsetIterate datasource="ds1" >
<jbo:ShowValue datasource="ds1" dataitem="Id" ></jbo:ShowValue>
<jbo:ShowValue datasource="ds1" dataitem="Firstname" ></jbo:ShowValue>
<jbo:ShowValue datasource="ds1" dataitem="Lastname" ></jbo:ShowValue>
</jbo:RowsetIterate>
</BODY>
</HTML>
<jbo:ReleasePageResources />
Copyright © 1997, 2006, Oracle. All rights reserved.