BC4Jデータ・タグを使用した行の編集について

ユーザーによる行編集を可能にするには、通常、連動する次の2つのJSPページを作成します。

BC4J Inputタグの機能

HTMLフォーム要素で<jbo:InputXxx... /><jbo:Row... />などのBC4Jデータ・タグを使用すると、次のユーザー操作を可能にするJSPフォームを作成できます。

送信JSPページで行データを処理するには、Webサーバー・ページで作成された編集JSPに次のものが含まれている必要があります。

1番目の要件は、タグのdataitem属性を、更新するデータソースの属性に設定することでBC4J Inputデータ・タグで対応します。2番目の要件は、BC4J ShowValueデータ・タグおよび特別なビュー・オブジェクト属性RowKeyを使用して値を割り当てるHTMLの非表示入力要素で対応します。ブラウザはJSPフォーム要素から収集したこの情報をHTTP入力パラメータとして、処理のために送信JSPページにポストします。

編集および送信JSPページの機能

データ入力(編集)JSPページには次のものが含まれます。

  1. アプリケーション・モジュール接続および有効なビュー・オブジェクト・データソースを指定するBC4Jデータ・タグ。

  2. 処理が完了するまでアプリケーション・モジュールの状態を保持するステートフル・モードにreleasemode属性が設定されたBC4J ApplicationModuleデータ・タグ。編集操作では、ステートフルが推奨されます。ステートフル・モードにより、ユーザーが操作を完了するまでデータソースが保持されます。

  3. actionで送信JSPページを指定したHTMLの<form>要素。

    ヒント: 行の値を送信JSPページに送るにはHTTPのPOSTリクエストの使用をお薦めします。このプロトコルを使用すると、どのような長さのパラメータ値でもブラウザから送信できます。<form>タグでmethod="post"を指定しない場合、ブラウザはHTTPのGETにより添付のパラメータ値を送信JSPページのURLに送りますが、この場合、URLが255文字を超える長さになると問題が発生する可能性があります。POSTリクエストを使用する場合、<form>タグは次のようになります。

    <form name="DataInput_form" method="post" action="submit.jsp">

    HTTPプロトコルで定義されたHTTPメソッドに習熟していない場合、詳細はWorld Wide Web Consortium(W3C)のサイト(http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3)を参照してください。
  4. データソースの既存の行をユーザーが参照できるようにするためのJSPスクリプトレット・コード。編集JSPページに表示される行数にかかわらず、JSPとの対話でユーザーは一度に1行を編集および送信する必要があります。

  5. データソースの特定の属性の現在値を表示し、ユーザーがその値を編集できるようにするための任意のBC4J Inputデータ・タグ。フォームはこれらを使用し、更新する属性の値を含むHTTPリクエスト・パラメータを生成します。

  6. 更新するデータソース属性の行キーを含むコントロールを生成するためのHTMLの非表示入力要素。フォームはこのコントロールを使用し、更新する行のためにもう1つのHTTPリクエスト・パラメータを生成します。

送信JSPページには次のものが含まれます。

  1. 編集JSPページと同じアプリケーション・モジュール接続およびビュー・オブジェクト・データソースを指定するBC4Jデータ・タグ。

  2. データがコミットされるとアプリケーション・モジュールの状態を解放するステートレス・モードにreleasemode属性が設定されたBC4J ApplicationModuleデータ・タグ。

  3. 更新するデータソースの行および属性と編集JSPページから送信されるHTTPリクエスト・パラメータを一致させるためのBC4J Rowデータ・タグ。

  4. データベースに対して行をコミット(またはロールバック)するためのBC4Jデータ・タグ。

  5. ユーザーがさらに行編集を行う場合に、編集JSPページに戻るためのHREF。

BC4J Inputタグを使用した入力パラメータの指定

HTTP入力パラメータを生成するには、BC4J Inputデータ・タグでデータソースおよびデータ項目を指定する必要があります。データソースには更新するBC4Jビュー・オブジェクトを指定し、データ項目には編集された値を受け取るビュー・オブジェクトの属性を指定します。入力パラメータは、ユーザーが入力する値と指定した名前を組み合せて名前と値のペアを構成します。

たとえば、顧客データソース(custDataSource)の顧客番号(CustNo)属性の更新に使用する基本的なInputTextデータ・タグは次のようになります。



<jbo:InputText datasource="custDataSource" dataitem="CustNo" />

dataitem(データ項目)には次のようにオブジェクト表記法を使用できる点に注意してください。



<jbo:InputText datasource="custDataSource" dataitem="Address.City" />

BC4J ShowValueタグを使用した行キーの取得

Inputデータ・タグを任意のデータソース属性にバインドした後で、ユーザーにより現在編集されているデータソースの行を識別する必要があります。編集JSPページに表示される行を一意に識別するには、その行の行キー値を取得するための特別なビュー・オブジェクト・データソースの属性を使用します。その後、HTMLの非表示入力要素を使用してその行キー値をポストします。たとえば、現在の行に対して行キーを生成するには、編集フォームに次のような要素をインクルードする必要があります。



<input name="RowKeyValue" type="hidden" value="<jbo:ShowValue
datasource="custDataSource" dataitem="RowKey"/>" />

このコードでは、BC4J ShowValueデータ・タグ内で特別なビュー・オブジェクト属性RowKeyの値を使用して行キーの文字列を表示することにより、データソース内の現在の行を識別しています。HTTP入力パラメータ名(RowKeyValue)は変更できます。ただし、ShowValueタグのデータ項目の値には、データソース内の属性名と一致するように"RowKey"を指定する必要があります。ShowValueデータ・タグのデータソース(custDataSource)はInputデータ・タグで命名したデータソースと一致している必要があります。

注意: BC4J Rowデータ・タグのFindアクションを実行する場合にも、任意の行のHREFアンカー・タグを生成するためにShowValueデータ・タグおよび行キーを使用できます。

前述の顧客番号の例で、ユーザーが顧客番号を入力し、フォーム・データを送信すると、入力された値と行キーに基づいたHTTPリクエスト・オブジェクトがブラウザで生成されます。

BC4J Rowタグを使用した行の更新

HTTPパラメータを取得し、指定された行で更新アクションを開始するには、送信JSPページを使用します。次のようにRowデータ・タグでUpdateアクションを指定し、処理を実行します。



<jbo:Row id="myrow" datasource="custDataSource" rowkeyparam="RowKeyValue"
action="Update" > </jbo:Row>

Rowデータ・タグのデータソース(custDataSource)は、挿入または編集JSPページのInputデータ・タグで指定したデータソースと同じです。編集JSPページの非表示入力要素(RowKeyValue)のユーザー定義名をRowデータ・タグのrowkeyparam属性に割り当てることにより、更新を受け取る特定の行を識別します。Rowデータ・タグはrowkeyparam属性を使用して、HTTPリクエスト・オブジェクトから行キー値を取得します。行キーを使用してBC4Jデータソース内の目的の行を検索すると、Rowデータ・タグは、作成されたフォーム・コントロールから取得した属性の名前と値のペアを含む受信HTTPパラメータに基づいて暗黙的に属性設定処理を実行します。Inputデータ・タグのデータ項目で更新するデータソース属性の名前を指定したため、Rowデータ・タグで更新する属性を正しく取得できます。

注意: Rowデータ・タグで更新処理を実行した場合、更新の必要がない属性は更新されません。ユーザーの入力値を含むリクエスト・パラメータの値が元の値(作成されたJSPの非表示入力要素で参照可能)と異なる場合を除いて、属性設定処理はスキップされます。


BC4JフォームのInputデータ・タグについて
データ・タグを使用した行の更新