ビジネス・コンポーネント・フォームのInputデータ・タグは、次の3つのグループに分けられます。
レンダリングされたコントロールをビュー・オブジェクトの特定の属性にバインドするため、各Inputデータ・タグには共通して次のタグ属性があります。
重要: Inputデータ・タグdatasourceおよびdataitemに対して指定する値は、大/小文字が区別されます。JSPのランタイム例外を回避するには、ビュー・オブジェクトおよび属性の名前を、ビジネス・コンポーネント・プロジェクトで表示されているものと完全に一致させてください。
ユーザーが1つの属性の値から複数の値を選択できるフォームを作成する場合、送信JSPページには、複数のHTTPリクエスト・パラメータを処理するJSPスクリプトレット・コードが含まれる必要があります。この問題については、後述の「選択入力」の冒頭で説明しています。
UIコントロールに相当する機能
JDeveloperビジネス・コンポーネントのデータ・タグ・ライブラリで提供されているビジネス・コンポーネントのInputデータ・タグにより、新規または既存の行のデータに対して機能する様々なUIコントロールがレンダリングされます。<jbo:InputXxx... />
データ・タグで指定されるInputアクションは、次の代表的なUIコントロールに相当します。
コントロール・タイプ | ビジネス・コンポーネントのデータ・タグ |
---|---|
基本的なテキスト入力 |
|
複数行テキスト入力領域 |
|
単一選択コンボボックス |
|
複数選択コンボボックス |
|
値リスト選択入力 |
|
単一選択ラジオ・ボタン・グループ |
|
複数選択チェックボックス・グループ |
|
日付選択入力 |
|
パスワード入力 |
|
非表示入力 |
|
InputRender入力 |
|
JSPにより、作成したHTMLフォーム内に<jbo:InputXxx... />
データ・タグがレンダリングされると、コントロールによって生成されたソースHTMLは標準HTMLフォーム要素として表示されます。たとえば、顧客名に関する行データの表示に使用されるInputTextデータ・タグでは、名/値ペアを定義する次の静的なHTML入力要素が生成されます。
<INPUT TYPE="TEXT" NAME="CUSTNAME" VALUE="John" ROWS="1" SIZE="20" />
<INPUT TYPE="HIDDEN" NAME="_CUSTNAME" VALUE="John" />
<jbo:InputXxx ... />
データ・タグを使用した行の更新と、静的なHTMLフォーム要素を使用した行の更新の相違点は、ビジネス・コンポーネントのデータ・タグによってビュー・オブジェクトのデフォルト値を表示できる点です。さらに、Inputデータ・タグをビュー・オブジェクトにバインドするため、HTMLフォーム要素に依存している場合、ビュー・オブジェクトが提供するデフォルトのサイズ変更、書式設定およびデータ検証(提供の可能性あり)といったメリットが失われます。
基本的なテキスト入力
レンダリングされたこれらのコントロールには、特定の属性の現在値が表示され、ユーザーが値を編集できます。送信されると、更新された値が指定の属性に割り当てられます。
<jbo:InputText datasource="custDataSource" dataitem="Name" />
この例では、標準HTMLテキスト入力とともに、顧客(custDataSource
)ビュー・オブジェクトのName
属性と等しい値が生成されます。 <jbo:InputTextArea datasource="custDataSource" dataitem="Comment" rows="10" cols="20" />
この例では、10行と幅20文字を最大とする複数行HTMLテキスト入力が生成されます。データは顧客(custDataSource
)ビュー・オブジェクトのComment
属性からレンダリングされます。選択入力
これらのコントロールでは、データベースから問い合せた選択肢のリストからユーザーが選択できます。これらのコントロールは、選択リストを表示するビュー・オブジェクトおよび更新を受け取るビュー・オブジェクト、計2つの異なるビュー・オブジェクトに依存しています。いくつかの選択入力タグが、単一選択リスト(multiple="no")と複数選択リスト(multiple="yes")のどちらを指定するかに応じて異なったレンダリングとなります。
重要: 選択入力タグに対してmultiple="yes"
を指定した場合、送信JSPページには、複数のHTTPリクエスト・パラメータを処理するためのJSPスクリプトレット・コードが含まれる必要があります。データ入力JSPフォームから値を取得するには、ServletRequest
インタフェースのgetParameterValues()
メソッドを使用します。次のように送信JSPページのビルトイン・リクエスト・オブジェクトを使用しますが、ここでgetParameterValues()
に渡されるStringは、コントロールのdataitem属性の値です。
<% String params[] = request.getParameterValues("MyDataItemValue");
for ( int i=0; i< params.length; i++) out.println(params[i]); %>
選択入力タグでは、ユーザーに表示される内容および更新内容を定義する共通属性セットが共有されます。
これらのタグ属性は、ユーザーが選択する可能性のあるものを表示する際にコントロールで使用されるビュー・オブジェクトおよび属性を識別します。ビュー・オブジェクトおよび属性の名前は大/小文字が区別されており、ビジネス・コンポーネント名と完全一致する必要があります。
このタグ属性は、ユーザーが行を編集しているビュー・オブジェクト行セットを更新するためにコントロールが処理ページに渡すデータを指定します。(多くの場合、ユーザーにはこの値は表示されません。)
これらのタグ属性は、更新する別のビュー・オブジェクトおよび属性を識別します。識別する属性は、ユーザーが編集する行に含まれます。
選択入力タグに対して指定する2つのビュー・オブジェクトは一意である必要があります。次の図に、2つの異なるビュー・オブジェクトを使用した属性の相互作用を示します。
ユーザーが選択した結果実行される更新は、次の順序をたどります。
<jbo:InputSelect ...>
データ・タグを使用したドロップダウン・リストがレンダリングされます。レンダリングされたコントロールには、DisplayDataSourceのDisplayDataItem(Name
)属性を使用して従業員名が表示されます。
EmpNo
)を使用したHTTPパラメータが、名/値ペアとして送信JSPページ(非表示)に渡されます。これによってDataSourceのDataItem( EmpNo
)が更新されます。
Inputデータ・タグが2つのビュー・オブジェクトの名前を指定する一方で、コントロールにより生成されるソースHTMLは標準の<SELECT>要素として表示されます。この例におけるソースHTMLは次のようになります。
<SELECT NAME="Name" CLASS="vrSelectField" >
<OPTION SELECTED VALUE="Abbey">Abbey <OPTION VALUE="Rose">Rose
<OPTION VALUE="Jones">Jones
</SELECT>
指定されたビュー・オブジェクトでは、フォームがHTTPパラメータの名/値ペアとして渡すデータが<SELECT>要素に対して提供されるだけです。
multiple
が"yes"と"no"のどちらに設定されているかに応じて、単純な単一選択ドロップダウン・リストまたは複数選択コンボボックスをレンダリングします。ただし、 multiple="yes"
と指定した場合、送信JSPページには、複数のHTTPリクエスト・パラメータを処理するためのJSPスクリプトレット・コードが含まれる必要があります。サンプルについては、「選択入力」の冒頭を参照してください。このコントロールの2つのバージョンは次のようにレンダリングされます。
<jbo:InputSelect multiple="no|yes" datasource="custDataSource"
dataitem="Transhistory"
displaydatasource="transDataSource"
displaydataitem="Tdesc"
displayvaluedataitem="Tcode" />
これらの属性を設定すると、トランザクション説明のリストが含まれる参照ビュー・オブジェクト(transDataSource
)内のデータにより、顧客(custDataSource
)ビュー・オブジェクトを更新するよう選択することになります。トランザクション説明(Tdesc
)はドロップダウン・リストまたはコンボボックスのいずれかで表示され、顧客のトランザクション履歴(Transhistory
)がトランザクション識別コード(Tcode
)によって更新されます。multiple
が"yes"と"no"のどちらに設定されているかに応じて、単一選択ラジオ・ボタン・グループまたは複数選択チェック・ボックス一式をレンダリングします。ただし、 multiple="yes"
と指定した場合、送信JSPページには、複数のHTTPリクエスト・パラメータを処理するためのJSPスクリプトレット・コードが含まれる必要があります。サンプルについては、「選択入力」の冒頭を参照してください。レンダリングされたコントロールの2つのバージョンは次のようになります。 <jbo:InputSelectGroup multiple="no"
datasource="custDataSource"
dataitem="Custstatus"
displaydatasource="statusDataSource"
displaydataitem="Sname"displayvaluedataitem="Scode" />
この単一選択グループの例では、ステータス・コードが含まれる参照ビュー・オブジェクト( statusDataSource
)内のデータにより、顧客( custDataSource
)ビュー・オブジェクトを更新しています。ステータス名(Sname
)はラジオ・ボタン・グループに表示され(multiple
が"no"に設定されているため)、顧客のステータス(Custstatus
)はステータス・コード(Scode
)によって更新されます。 <jbo:InputSelectGroup multiple="yes"
datasource="custDataSource"
dataitem="Custshippref"
displaydatasource="shipserviceDataSource"
displaydataitem="SSname"
displayvaluedataitem="SScode" />
複数選択グループの例では、出荷サービス名が含まれる参照ビュー・オブジェクト(shipserviceDataSource
)のデータにより、顧客(custDataSource
)ビュー・オブジェクトを更新しています。出荷サービスの名前(SSname
)は一連のチェックボックスで表示され(multiple
が"yes"に設定されているため)、顧客の出荷設定(Custshippref
)は出荷サービスのコード(SScode
)によって更新されます。 <jbo:InputSelectLOV datasource="custDataSource"
dataitem="Custrepname"
displaydatasource="repDataSource"
displaydataitem="Mgr"
displayvaluedataitem="Repname"
formname="form1" />
このサンプルでは、代理人(repDataSource
)ビュー・オブジェクトのデータにより、顧客(custDataSource
)ビュー・オブジェクトを更新できます。顧客代理人のマネージャ(Mgr
)はポップアップ値リストに表示され、顧客の代理人名(Custrepname
)は代理人の名前(Repname
)によって更新されます。フォーム名( form1
)は、InputSelectLOVデータ・タグが含まれるHTMLフォーム要素の名前を参照します。displayvaluedataitem="Repname"
)属性の値が表示されます。将来のリリースでは、入力コントロールに表示する値を指定できるようになります。特殊入力
これらのコントロールには、日付選択を可能にしたり、パスワード入力を受け入れるなどの特殊な目的があります。
<jbo:InputDate datasource="empDataSource" dataitem="Hiredate" formname="form1" />
日付が選択されると、入力コントロールに選択内容が表示されます。フォーム名(form1
)は、InputDateデータ・タグが含まれるHTMLフォーム要素の名前を参照します。 <jbo:InputPassword datasource="empDataSource" dataitem="Password" cols="9" />
入力すると、パスワードの値が非表示になります。
ビジネス・コンポーネント・データ・タグを使用した行の編集について
ビジネス・コンポーネント・データ・タグを使用した行の作成について
Copyright © 1997, 2007, Oracle. All rights reserved.