ユーザーが行を編集できるようにするには、一般に連携する2つのJSPページを作成します。
ビジネス・コンポーネントのInputタグの役割
HTMLフォーム要素内の<jbo:Input Xxx... />
および<jbo:Row... />
を含むビジネス・コンポーネント・データ・タグを使用して、JSPフォームを作成できます。このJSPフォームでユーザーは次のことを実行できます。
送信JSPページで行データを処理するには、Webサーバー・ページでレンダリングされる編集JSPに次の情報が含まれる必要があります。
更新するデータソース属性に対してタグのdataitemを設定した場合、ビジネス・コンポーネントのInputデータ・タグにより1つ目の必要項目が処理されます。ビジネス・コンポーネントのShowValueデータ・タグおよび特殊ビュー・オブジェクト属性 RowKey
を使用して値を割り当てたHTMLの非表示入力要素により、2つ目の必要項目が処理されます。ブラウザは、JSPフォーム要素から収集したこの情報を、HTTP入力パラメータとして処理用の送信JSPページにポストします。
編集JSPページおよび送信JSPページの役割
データ入力(編集)JSPページには次の情報が含まれます。
releasemode
属性がstatefulに設定された<jbo:ApplicationModule>
データ・タグ。編集操作に推奨される状態はstatefulです。statefulモードを指定すると、ユーザーが操作を完了するまでデータソースを保持できます。
ヒント: 行の値を送信JSPページに渡すには、HTTPのPOST
リクエストを使用することをお薦めします。このプロトコルでは、ブラウザがどのような長さのパラメータ値でも確実に渡すことができます。<form>タグから method="post"
を省略した場合、ブラウザは送信JSPページのURLに追加されたパラメータ値を渡すためにHTTPのGET
を使用し、 255文字を超えるURLは問題となる可能性があります。POST
リクエストを使用する場合、<form>タグは次のようになります。
<form name="DataInput_form" method="post" action="submit.jsp">
HTTPプロトコルで定義されたHTTPメソッドを熟知していない場合は、次のURLにあるWorld Wide Web Consortium(W3C)で詳細を参照してください。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3
送信JSPページには、次の情報が含まれます。
<jbo:ApplicationModule>
データ・タグ。
<jbo:Row>
データ・タグ。
ビジネス・コンポーネントのInputタグを使用した入力パラメータの指定
HTTP入力パラメータを生成するには、ビジネス・コンポーネントのInputデータ・タグで、データソースおよびdataitemを指定する必要があります。データソースは更新するビジネス・コンポーネント・ビュー・オブジェクトを識別し、dataitemは編集された値を受け取るビュー・オブジェクト内の属性を識別します。入力パラメータにより、ユーザーが入力した値とdataitemについて指定した名前が組み合せられ、名/値ペアが作成されます。
たとえば、顧客(custDataSource
)データソースの顧客番号(CustNo
)属性の更新に使用した場合の、基本的なInputTextデータ・タグの外観は次のようになります。
<jbo:InputText datasource="custDataSource" dataitem="CustNo" />
タイプが「オブジェクト」であるdataitemには、オブジェクト表記法を使用できます。
<jbo:InputText datasource="custDataSource" dataitem="Address.City" />
ビジネス・コンポーネントのShowValueタグを使用した行キーの取得
Inputデータ・タグを目的のデータソース属性にバインドした後、ユーザーが現在編集しているデータソース行を識別する必要があります。編集JSPページに表示される行を一意に識別するには、ビュー・オブジェクト・データソースの特殊属性を使用して、行の行キー値を取得します。続いて、HTMLの非表示入力要素を使用して、行キー値をポストします。たとえば、現在の行に対して行キーを生成するには、編集フォームに次のような要素が含まれる必要があります。
<input name="RowKeyValue" type="hidden" value="<jbo:ShowValue
datasource="custDataSource" dataitem="RowKey"/>" />
このコードは、行キーの文字列表現をレンダリングするためにビジネス・コンポーネントのShowValueデータ・タグを使用しており、データソース内の現在の行を識別するために特殊ビュー・オブジェクト属性値RowKey
を使用しています。入力HTTPパラメータ名(RowKeyValue
)は自分で選択する名前です。ただし、ShowValue dataitemの値は、データソース内のこの属性名と一致するために"RowKey
"である必要があります。ShowValueデータ・タグのデータソース(custDataSource
)は、Inputデータ・タグで指定されたデータソースと一致する必要があります。
注意: ビジネス・コンポーネントのRowデータ・タグのFindアクションを実行する場合、ShowValueデータ・タグおよび行キーを使用して、任意の行に対しHREFアンカーを生成することもできます。
引き続き顧客の例で説明すると、ユーザーが顧客番号を入力してフォーム・データを送信した後、ブラウザは入力した値および行キーに基づいてHTTPリクエスト・オブジェクトを生成します。
ビジネス・コンポーネントのRowタグを使用した行の更新
送信JSPページを使用してHTTPパラメータを取得し、指定の行でUpdateアクションを開始します。Updateアクションを含むRowデータ・タグがこの目的を果たします。
<jbo:Row id="myrow" datasource="custDataSource" rowkeyparam="RowKeyValue" action="Update" > </jbo:Row>
Rowデータ・タグのデータソース(custDataSource
)は、挿入または編集JSPページ内のInputデータ・タグで識別されるものと同じデータソースです。編集JSPページの非表示入力要素(RowKeyValue
)のユーザー定義名を、Rowデータ・タグのrowkeyparam
属性に割り当てることで、更新を受け取る特定の行を識別します。Rowデータ・タグでは、HTTPリクエスト・オブジェクトから行キー値を取得するためにrowkeyparamタグ属性を使用します。ビジネス・コンポーネント・データソース内のターゲット行を特定するために行キーを使用すると、Rowデータ・タグが受信したHTTPパラメータに対して属性の設定操作を暗黙的に実行します。これらのパラメータには、レンダリングされたフォーム・コントロールから取得された属性名/値ペアが含まれます。Inputデータ・タグのdataitemに、更新するデータソース属性の名前を指定したため、Rowデータ・タグが更新する正しい属性を受け取ります。
注意: Rowデータ・タグによって実行される更新操作が効率的に機能し、不要な属性の更新は回避されます。ユーザーの入力値が含まれるリクエスト・パラメータの値が元の値(レンダリングされたJSPの非表示入力要素内に表示)と異なる場合を除いて、Rowデータ・タグは属性の設定操作をスキップします。
ビジネス・コンポーネント・フォームのInputデータ・タグについて
Copyright © 1997, 2007, Oracle. All rights reserved.