データ・タグを使用した行の検索

このトピックでは、BC4Jランタイムで提供されている行検索機能と、BC4Jデータ・タグでその機能がどのように操作されるかを説明します。BC4Jデータ・タグは、BC4Jビュー・オブジェクトを移動する様々な方法を提供します。

行キーを含むURLの生成

行キーは行セット内の行に対する一意の識別子です。キーは、行セット内でその行を検索するために後から使用できる不透明オブジェクトです。次のSnippetでは、行セット(DataSourceデータ・タグで定義)内のすべての行を反復するためにRowsetIterateタグが使用されています。



<jbo:ApplicationModule configname="myPackage.MyPackageModule.MyPackageModuleLocal"
      id="MyPackageModule" 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>

マスター・ページの重要な部分はHREFのShowValueタグ内にあります。



<a href="submit.jsp?RowKeyValue=<jbo:ShowValue datasource='dsMaster'
    dataitem='RowKey'/>">See this record</a>

これにより、submit.jspを起動するアンカーが生成され、RowKeyValue HTTPパラメータ("RowKeyValue"には、アプリケーションに固有の任意の名前を選択可能)が渡されます。コードでは、専用の属性値RowKeyを使用して、行IDの文字列をレンダリングするために、ShowValueタグが使用されています。

行キーHTTPパラメータに基づく行の検索

ディテール・ページでは、マスター・ページでクリックされた行を検索するために、RowKeyValue HTTPパラメータを使用します。このためにRowタグを使用します。このタグは、そのキー値を含むHTTPパラメータ名に基づいて、正しい行を自動的に検索します。次に示すのは、ディテール・ページの構文です。



<jbo:ApplicationModule configname="myPackage.MyPackageModule.MyPackageModuleLocal"
        id="MyPackageModule" releasemode="Stateless" />

<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="Package17Module" 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>

このコードでは、正しい行を検索し、それを指す現在位置を設定します。パラメータ名が一致することを確認する必要があります。

注意: アプリケーション・モジュールをステートフル解放モード(デフォルト)で使用中の場合は、行キーを使用して行を検索する前に、データソースをリフレッシュする必要があります。データソースは次のコードを使用してリフレッシュできます。

<jbo:RefreshDataSource datasource="dsMaster" />