指定したビジネス・コンポーネント・アプリケーション・モジュールから、ビュー・オブジェクトのインスタンスを動的に作成します。
JSP構文
<jbo:CreateViewObject
appid="appModuleInstanceName"
name="viewObjectName"
[ rangesize="表示する行数 | -1 | 1" ]
>
SQL_SELECT
</jbo:CreateViewObject>
説明
<jbo:CreateViewObject>データ・タグは、その本体でSQLのSELECT文を定義します。通常は、ユーザー入力から文を生成します。たとえば、ユーザー入力に基づいて作成した動的ビュー・オブジェクトにバインドすることにより、LOV選択リストを表示するなどの例があります。
動的ビュー・オブジェクト・インスタンスを操作するには、<jbo:DataSource>タグを使用し、その動的ビュー・オブジェクトのインスタンスに基づいてデータソースを作成する必要があります。DataSourceデータ・タグでは、行セットおよび属性を操作できるRowsetIterateタグやShowValueタグなど他のデータ・タグに渡す動的ビュー・オブジェクトのIDを定義します。行セットを生成するには、CreateViewObjectタグの本体にSQLのSELECT文がインクルードされている必要があります。
<jbo: CreateViewObject >
ここにSQL SELECT文を記述
</jbo: CreateViewObject >
その後、後述の例のように<jbo:RowsetIterate>および<jbo:ShowValue>データ・タグを使用して、結果セットからデータを表示できます。
注意: 動的ビュー・オブジェクトの属性名を参照するデータ項目には、必ず大文字を使用する必要があります。CreateViewObjectデータ・タグは直接データベースに問合せを実行するため、通常のビジネス・コンポーネント属性の別名は無視され、データベース表の列名は必ず大文字で表されています。
参照項目: oracle.jbo.ViewObject
属性
appid: ApplicationModuleデータ・タグで指定したデータ・アプリケーションID。
name: 動的ビュー・オブジェクトの名前。この名前によって、インスタンスの作成元のビュー・オブジェクトが識別されます。このパラメータによって、その名前のデータソースが作成されるわけではありません。動的ビュー・オブジェクトのデータソースを作成するには、DataSourceタグのviewobjectパラメータにこの名前を渡す必要があります。
注意: この名前が既存のビュー・オブジェクトと競合する場合は、既存のビュー・オブジェクトが削除されます。これは、現在使用中のビュー・オブジェクトを別のビュー・オブジェクトで置換する場合に便利です。
rangesize: (オプション)データソースからフェッチする一定の行数。これは、行セット全体を操作しない場合に役立ちます。範囲により、データソース内の行のサブセットにアクセスできるウィンドウが定義されます。範囲は、行セットが大きく、すべての行をクライアントに送る必要がない場合、またはページに特定の行数を表示する場合に便利です。デフォルトでは、rangesizeは1に設定されます(注意: 値に-1を設定すると、すべての行がフェッチされます)。
SQL_SELECT: 指定するSQL SELECT文を介したビュー・オブジェクト問合せを定義し、JSPが操作する行セットを生成します。通常は、ユーザー入力からこの文を生成します。問合せ内の名前はデータベースの表および列で要求されるため、大文字で指定する必要があります。
ヒント: 問合せの作成方法が不明な場合は、このフィールドに何か入力し、生成されたデータ・タグ内のSQL文を調整します。
例
次の例では、CUSTOMERS表に対する問合せに基づいて動的ビュー・オブジェクトを作成します。ページにはビュー・オブジェクト属性であるPHONE_NUMBERが表示されます。動的ビュー・オブジェクトの属性名はデータベースの列名で要求される(ビジネス・コンポーネント・プロジェクトの永続ビュー・オブジェクトに対して定義される属性の別名ではない)ため、<jbo:ShowValue>のデータ項目(PHONE_NUMBER)の値は、列名と同じである必要があります。
<%@ taglib uri="/webapp/DataTags.tld" prefix="jbo" %>
<%@ page contentType="text/html;charset=windows-1252"%>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
<TITLE>
Hello World
</TITLE>
</HEAD>
<BODY>
<jbo:ApplicationModule id="MypackageModule"
configname="mypackage.MypackageModule.MypackageModuleLocal"
releasemode="Stateful" />
<jbo:CreateViewObject appid="MypackageModule" name="MyNewViewObject" >
select * from CUSTOMERS
</jbo:CreateViewObject>
<jbo:DataSource appid="MypackageModule" id="ds1"
viewobject="MyNewViewObject" />
<jbo:RowsetNavigate datasource="ds1" action="First" />
<jbo:RowsetIterate datasource="ds1" >
<jbo:ShowValue datasource="ds1" dataitem="PHONE_NUMBERS" ></jbo:ShowValue>
</jbo:RowsetIterate>
</BODY>
</HTML>
<jbo:ReleasePageResources />