ユーザーによる行編集を可能にするには、通常、連動する次の2つのJSPページを作成します。
注意: JDeveloperに用意されているデータ・ページ・ウィザードにより、BC4Jデータソースの行をユーザーが編集できるようにするための編集および送信JSPページを簡単に作成できます。このウィザードは「新規」ギャラリで利用可能です。ウィザードを起動するには、「ファイル」->「新規」を選択し、「Web Tier」 - 「JSP for Business Components」カテゴリを選択して「Browse & Edit Form」項目をダブルクリックします。
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ページには次のものが含まれます。
POST
リクエストの使用をお薦めします。このプロトコルを使用すると、どのような長さのパラメータ値でもブラウザから送信できます。<form>タグでmethod="post"
を指定しない場合、ブラウザはHTTPのGET
により添付のパラメータ値を送信JSPページのURLに送りますが、この場合、URLが255文字を超える長さになると問題が発生する可能性があります。POST
リクエストを使用する場合、<form>タグは次のようになります。 <form name="DataInput_form" method="post" action="submit.jsp">
送信JSPページには次のものが含まれます。
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の非表示入力要素で参照可能)と異なる場合を除いて、属性設定処理はスキップされます。