行インスタンスを取得し、その行に対して操作を実行します。
JSP構文
<jbo:Row
id="rowInstanceName"
datasource="datasourceInstanceName"
[ action="active | create | createinrange | createonly | current | delete | find | get | lock | update" ]
[ rowkeyparam="HTTP parameter name"] | [ rowkey="rowPointer" ] >
[JSP_tags]
</jbo:Row>
説明
<jbo:Row>データ・タグは、行の取得および行インスタンスに対する行操作を実行します。
行の取得操作には次のものがあります。
active
は、現在<jbo:RowsetIterator>データ・タグにより反復されている行を取得します。 find
は、リクエスト・オブジェクトのURLパラメータから指定される行を取得し、現在の行を変更します。get
は、リクエスト・オブジェクトのURLパラメータから指定される行を取得しますが、現在の行は変更しません。行操作を実行するには、その前に特定の行を検索する必要があります。データソースの行を特定するには、次のようにしてRowタグを使用します。
find
またはget
処理を使用します。active
またはcurrent
処理を使用します。Rowタグで実行可能な行操作は次のとおりです。
current
は、指定されたデータソースの現在の行に行ポインタを設定します。create
は、指定されたデータソースに新規の行を挿入し、この行に行ポインタを配置します。createinrange
は、行の現在位置を変更せずに、範囲の最初に新しい行を挿入します。createonly
は、新しい行を作成しますが、行セットには挿入しません。この処理は、各属性のデフォルト値を取り出すためだけに行を作成する必要があり、その後はこの行を使用しない場合に便利です。delete
は、指定されたデータソースの現在の行を削除します。lock
は、指定されたデータソース内で表示または変更している行データが、データの処理が終了するまで他のユーザーに変更されないようにします。update
は、指定されたデータソースで(フォームからのURLパラメータを使用するなどの方法で)設定した属性の値を変更します。参照項目: oracle.jbo.Row
属性
id: Rowタグのインスタンス名。割り当てる名前は、ページ内で一意である必要があります。有効な任意のJava識別子を使用できます。スクリプトレット内では、idをoracle.jbo.Row
型のスクリプト可能な変数として使用できます。
datasource: 処理の対象となる行を持つデータソースのID。データソースは、<jbo:DataSource>データ・タグを使用して作成します。
action: 実行する行操作。データソースで処理する操作に応じて、active
、create
、createinrange
、createonly
、current
、find
、get
、update
、delete
またはdock
のいずれかの値を入力します。
active
は、現在<jbo:RowsetIterator>データ・タグの本体で反復されている行を取得します。この処理では、行の現在位置は変更されません。
create
は、行セットの現在の行の前(または現在の行が存在しない場合は行セットの最初)に新しい行を挿入し、現在位置を新しい行に設定します。
createinrange
は、行の現在位置を変更せずに、範囲の最初に新しい行を挿入します。
createonly
は、新しい行を作成しますが、行セットには挿入しません。この処理は、各属性のデフォルト値を取り出すためだけに行を作成する必要があり、その後はこの行を使用しない場合に便利です。
current
は、指定されたデータソースの現在の行に行ポインタを設定します。
delete
は、指定されたデータソースの現在の行を削除します。
find
は、リクエスト・オブジェクトのURLパラメータから行を取得します。get
と異なり、行の取得後に現在の行を変更します。
get
は、リクエスト・オブジェクトのURLパラメータから行を取得します。find
と異なり、行の取得後に現在の行を変更しません。
lock
は、指定されたデータソース内で表示または変更している行データが、データの処理が終了するまで他のユーザーに変更されないようにします。
update
は、指定されたデータソースで(フォームからのURLパラメータを使用するなどの方法で)設定した属性の値を変更します。
ヒント: <%=rowop%>
などの表現を使用して、実行時に操作パラメータを設定することもできます。この方法によってページの別の部分からRowタグに処理値を渡すことができます。
ヒント: <jbo:ShowValue datasource='ds1' dataitem='RowKey'></jbo:ShowValue>
のように、dataitem属性に特別な値であるRowKeyを設定してShowValueタグを使用することにより、データ項目の現在の行を特定できます。
request.getParam("RowKey")
などのコードを使用して文字列値を取得する必要があります。rowkeyparam
属性を使用すると、指定されたRowKeyパラメータの値を直接取得できます。 例
次の例では、ユーザーが別のJSPページで選択したマスター行に対するディテール行セットを、Rowタグを使用して表示します。この例では、行の選択ページでHREFアンカーが生成されます。ユーザーがこれをクリックすると、ディテール・ページが起動されます。
次のコードでは、マスター表のHREFが、ShowValueタグでdataitem属性の値を特別な値であるRowKeyに設定して取得した、RowKeyValue HTTPパラメータ(パラメータ名はアプリケーション固有)を渡します。
<jbo:ApplicationModule id="MyPackageModule" configname="myPackage.MyPackageModule.MyPackageModuleLocal" releasemode="Stateful" /> <jbo:DataSource id="dsMaster" appid="MyPackageModule" viewobject="DeptView"> </jbo:DataSource> <table border="1"> <jbo:RowsetIterate datasource="dsMaster" > <TR> <TD><a href="detail.jsp?RowKeyValue=<jbo:ShowValue datasource='dsMaster' dataitem='RowKey'/>">See this record</a> </TD> <TD>Department Name:</TD> <TD><jbo:ShowValue datasource="dsMaster" dataitem="Dname"> </jbo:ShowValue> </TD> </TR> </jbo:RowsetIterate> </table>
受信ページでは、Rowタグのfind
アクションにより、渡された行キー値を含むHTTPパラメータの名前(RowKeyValue)に基づいてユーザーがクリックした行を特定します。find
処理でマスター・データソースの現在の行を設定することにより、ディテール行セットが表示可能になります。
注意: 解放モードがステートフルのアプリケーション・モジュールを使用する場合(デフォルト)、行キーを使用して行を検索する前にデータソースをリフレッシュする必要があります。データソースは次のコードを使用してリフレッシュできます。
<jbo:RefreshDataSource datasource="dsMaster" />
定義済のRowKeyValue HTTPパラメータを(送信および受信JSPページでこのパラメータ名が使用されているか確認したうえで)使用し、渡された行のディテール・ビューを表示する受信ページの構文を次に示します。
<jbo:ApplicationModule id="MyPackageModule" configname="myPackage.MyPackageModule.MyPackageModuleLocal" releasemode="Stateful" /> <jbo:DataSource id="dsMaster" appid="MyPackageModule" viewobject="DeptView" > </jbo:DataSource> <jbo:RefreshDataSource datasource="dsMaster" /> <jbo:Row id="masterRow" datasource="dsMaster" action="find" rowkeyparam="RowKeyValue" > </jbo:Row> <jbo:DataSource id="dsDetail" appid="MyPackageModule" viewobject="EmpView" > </jbo:DataSource> <h2>Employees for Department: <jbo:ShowValue datasource="dsMaster" dataitem="Dname"
</jbo:ShowValue>
</h2> <table border="1"> <jbo:RowsetIterate datasource="dsDetail" > <TR> <TD>Employee Name</a> </TD> <TD><jbo:ShowValue datasource="dsDetail" dataitem="Ename"> </jbo:ShowValue> </TD> </TR> </jbo:RowsetIterate> </table>
受信ページの重要な部分はRowタグ内にあります。
<jbo:Row id="masterRow" datasource="dsMaster" action="Find" rowkeyparam="RowKeyValue" > </jbo:Row>
Rowタグは、その他のタスクの実行にも使用できます。次の例では、データソースに新規レコードを挿入します。
<%@ taglib uri="/webapp/DataTags.tld" prefix="jbo" %> <HTML> <BODY> <jbo:ApplicationModule id="OnlineOrdersModule" configname="OnlineOrders.OnlineOrdersModule.LocalConfig" releasemode="Stateless" /> <jbo:DataSource id="ds1" appid="OnlineOrdersModule" viewobject="CustomerView" > </jbo:DataSource> <jbo:Row id="newRow" datasource="ds1" action="create" > <jbo:SetAttribute dataitem="Id" value="101" /> <jbo:SetAttribute dataitem="Lastname" value="wong" /> <jbo:SetAttribute dataitem="Firstname" value="howard"/> <jbo:SetAttribute dataitem="Address.Street" value="101 Main st" /> <jbo:SetAttribute dataitem="Address.City" value="Redwood City" /> </jbo:Row> </BODY> </HTML> <jbo:Commit appid="OnlineOrdersModule" /> <jbo:ReleasePageResources />