![]() | |
Sun Java™ System Identity Manager 7.0 ワークフロー、フォーム、およびビュー |
第 8 章
HTML 表示コンポーネントこの章では、Identity Manager の HTML 表示コンポーネントライブラリについて説明します。HTML 表示コンポーネントは、フォームのカスタマイズで使用されます。フォームのカスタマイズについては、「Identity Manager フォーム」を参照してください。
この章の内容
ここで説明する内容は次のとおりです。
HTML 表示コンポーネントフォームを設計するときは、ここで説明する HTML コンポーネントを使用します。フォームを作成するには、Identity Manager のフォーム XML 言語 (フォーム) を使用して、HTML 表示コンポーネントを表現します。この言語は実行時に解釈され、必要なコンポーネントが作成されます。これを使用することで、追加の Java 開発をほとんど、または一切行わずに、新しいページを動的に作成できるので、カスタマイズが大幅に簡略化されます。
HTML コンポーネントとは
HTML 表示コンポーネントは、HTML テキストの文字列を生成する Java クラスのインスタンスです。各表示コンポーネントは次の要素を持ちます。
表示コンポーネントの指定
表示コンポーネントは、次のように指定します。
<Field name='Name'>
<Display class='Class'>
<Property name='Name' value='Value'/>
</Display>
</Field>
HTML コンポーネントに関するページプロセッサの要件
HTML コンポーネントを実装するフォームには、次のページプロセッサ要件が適用されます。
非表示パラメータ
ほとんどのコンポーネントは、HTML フォームから渡されるパラメータの名前に対応した名前を持ちます。Identity Manager では、一般的な用途のために、いくつかのパラメータ名が予約されています。これらの名前をコンポーネント名に使用しないでください。
コンポーネントクラスHTML コンポーネントは、さまざまな方法で組み合わせることができる独立オブジェクトです。関連するコンポーネントはクラスにまとめられます。コンポーネントクラスには、次の 2 つの主要グループがあります。
基本コンポーネントクラス
共通コンポーネントクラスには、1 つの値を表示、編集するためのコンポーネントが含まれます。これらのコンポーネントについては、「基本コンポーネント」の節を参照してください。
コンテナクラス
コンテナクラスは、特定の方法で視覚的に構成されたコンポーネントの集合を定義します。コンテナクラスを作成すると、通常は HTML の table タグが生成されます。単純なコンテナは、コンポーネントを縦または横に並べることができます。より複雑なコンテナは、より複雑にコンポーネントを配置でき、コンポーネントの周囲に装飾を加えることができる場合もあります。
コンテナ自体がコンポーネントであるため、どのコンテナも別のコンテナに含めることができます。このメカニズムを利用することで、複雑なページレイアウトを作成できます。たとえば、多くのページはタイトルを持ち、その後に編集フィールドのリスト、さらにフォーム送信ボタンの行を持ちます。このようなレイアウトを作成するには、垂直整列を使用して Panel コンポーネントを作成し、Label、EditForm、および ButtonRow コンポーネントを含めます。EditForm コンポーネント自体にも、多数のサブコンポーネントが含まれます。ButtonRow は、垂直整列を使用する Panel コンポーネントで、Button コンポーネントのリストがここに含まれます。
BorderedPanel
項目を配置するための 5 つの領域 (東西南北と中央) を定義します。北と南の領域に配置されたコンポーネントは、水平に並べられます。それ以外の領域に配置されたコンポーネントは、垂直に並べられます。
次のプロパティーがあります。
ButtonRow
ボタン配置用のデフォルトオプションを設定します。Panel コンポーネントを拡張します。
EditForm
この表示コンポーネントは、フォームをブラウザに表示するときのデフォルトの表示クラスです。
フォームコンポーネントは 2 つの列に配置され、左がタイトル、右がコンポーネントとなります。タイトルには吹き出しヘルプを含めることができます。複数のコンポーネントを 1 つの行に連結できます。
よく編集されるプロパティーは、title、subTitle、および adjacentTitleWidth です。
<Form name='Default User Form' help='account/modify-help.xml'>
<Display class='EditForm'>
<Property name='titleWidth' value='120'>
<Property name='adjacentTitleWidth' value='60'>
</Display>
EditForm には、これ以外に次のプロパティーがあります。
- adjacentTitleWidth - 隣接するフィールドのタイトルの幅を指定します。このプロパティーが定義されていない場合は、デフォルト値のゼロが適用されます。adjacentTitleWidth の値をゼロに設定すると、列のタイトルの大きさは自動的に変更されます。ゼロ以外の値を設定した場合は、隣接する列 (たとえば、2 番目と 3 番目の列) のタイトルの幅は adjacentTitleWidth の値に設定されます。
- componentTableWidth - EditForm の幅を指定します (ピクセル単位)。指定しない場合は、デフォルト値の 400 ピクセル、または EditForm の defaultComponentTableWidth グローバルプロパティーの値が適用されます。
- noAlternatingRowColors - EditForm の行を同じ色で表示するかどうかを指定します。noAlternatingRowColors を true に設定すると、EditForm のすべての行が同じ色で表示されます。指定しない場合は、デフォルト値の false が適用されます。
Panel
もっとも基本的なコンテナを定義します。Panel は、単純な直線リストに子要素を表示します。
次のプロパティーがあります。
デフォルトの配置は垂直ですが、水平に設定することができます。
Selector
単一値または複数値のフィールド (それぞれ Text、ListEditor コンポーネントに相当) と、その下の検索フィールドを設定します。検索を実行すると、検索フィールドの下に結果が表示され、値フィールドに結果が取り込まれます。
その他のコンテナコンポーネントとは異なり、Selector は値を持ちます (search の結果が反映されるフィールド)。このコンポーネントには、通常、検索条件フィールドが含まれます。Selector は、検索結果の内容を表示するためのプロパティーを実装します。
次のプロパティーがあります。
- fixedWidth - コンポーネントの幅を固定にするかどうかを指定します (Multiselect と同じ機能) (ブール型)。
- multivalued - 値のデータ型が List であるか、String であるかを指定します。このプロパティーの値は、ListEditor または Text フィールドのどちらで値を表示するかを決定します (ブール型)。
- allowTextEntry - 用意されているリストから値を選択しなければならないか、手動で入力できるかを指定します (ブール型)。
- valueTitle - value コンポーネントに使用するラベルを指定します (String)。
- pickListTitle - picklist コンポーネントに使用するラベルを指定します (String)。
- pickValues - picklist コンポーネントで使用する値を指定します。NULL に設定した場合は、選択リストは表示されません (List)。
- pickValueMap - 選択リスト内の値の表示ラベルのマップ (Map または List)。
- searchLabel - 入力テキストフィールドの横のボタンに、指定のラベルを付けます。値を指定しない場合は、デフォルト値の「...」が適用されます。
- sorted - 選択リストの値をソートするかどうかを指定します。複数値の順序を指定しない場合も、値はソートされます (ブール型)。
- clearFields -「クリア」ボタンをクリックしたときに、リセットするフィールドのリストを指定します (List)。
次のプロパティーは、複数値のコンポーネントでのみ有効です。
次のプロパティーは、単一値のコンポーネントでのみ有効です。
SimpleTable
コンポーネントをグリッドに配置します。オプションとして、上部に列のタイトル行も設定できます。
次のプロパティーがあります。
TabPanel
次に示されるタブの行を表示する、タブ付きパネルの表示に使用されます。デフォルトでは、タブは水平に並べられます。
次のプロパティーがあります。
- leftTabs - true に設定すると、上部マージンにではなく、左マージンにそろえてタブが配置されます (ブール型)。
- border - true に設定すると、タブの下のメインパネルの周囲に境界線を表示します (ブール型)。
- renderTabsAsSelect - true に設定すると、タブの代わりに選択ドロップダウンとしてタブを表示します。これは、ブラウザの水平スクロールが必要になるほどタブの数が多いフォームで便利です。タブの左マージン配置と組み合わせて使用しないでください。
- tabAlignment - ページの内容に相対的な、タブの位置を決定します。有効な値は、left (左、デフォルト設定)、top (上)、right (右)、bottom (下)、center (中央)、および middle (中間) です。
<Field name='MainTabs'>
<Display class='TabPanel'>
<Property name='leftTabs' value='false'/>
<Property name='tabAlignment' value='left'/>
</Field>
Row
水平配置に対応したパネルの作成に使用されます。
SortingTable
列の見出しを指定して内容をソートできるテーブルの作成に使用されます。このテーブルの内容は、子コンポーネントによって定義されます。列ごとに 1 つの子コンポーネントを作成してください (columns プロパティーで定義)。通常は、列は FieldLoop に格納されます。
テーブルセルの表示時に、このコンポーネントには、子コンポーネントの align、valign、および width プロパティーが適用されます。
次のプロパティーがあります。
- pageButtonAlign - ページの内容に相対的な、ボタンの位置を決定します。有効な値は、left (左)、right (右)、bottom (下)、および center (中央) です。デフォルト値は、right です。
- sortEnable - true に設定すると、列のソートが有効になります (ブール型)。
- sortURL - 列のソートを選択したときに Identity Manager が送信する URL を指定します。列のソートを設定しない場合は、HtmlPage の _postURL が使用されます (String)。
- sortURLParams - sortURL とともに渡されるパラメータを指定します (String)。
- sortColumn - 現在ソート基準として使用されている列の番号を指定します。デフォルトでは、この値は最初の列に設定されます (Integer)。
- sortOrder - ソート順序を指定します。指定できる値には、asc (昇順) と desc (降順) があります。デフォルト値は asc です (String)。
- linkEnable - 最初の列をリンク付きに指定して、テーブルを生成するかどうかを指定します (ブール型)。
- linkURL - リンクの生成時に Identity Manager がリンクする URL を指定します。指定しない場合は、そのコンポーネントが使用される HtmlPage の送信 URL がデフォルト値として適用されます (String)。
- linkURLArguments - リンク URL に含める引数を指定します。
- linkColumn - linkURL 属性によって指定されるリンク生成で使用される列の番号を指定します (Integer)。
- linkParameter - リンク行 id の値を持つ送信データパラメータの名前を指定します。デフォルト値は id です。
- selectEnable - チェックボックスの列を、複数選択テーブルの左マージンにそろえて表示するかどうかを指定します。true に設定すると、Identity Manager はチェックボックスの列を表示します (ブール型)。
- columns - テーブル列の見出しのリストを指定します (文字列の List)。
- pageSize - テーブルに同時に表示する _pageSize の最大エントリ数を指定します。_pageSize より多くのエントリが存在する場合は、インタフェース要素で結果のページを切り替えることができます。_pageSize に 1 (デフォルト設定) を下回る値を設定すると、すべてのエントリが一度に表示されます (Integer)。
- useSavedPage - pageSize の値が 0 より大きい場合にテーブルをソートすると、現在の HTTP セッションのソートテーブルページが <fieldName>_currentPage 属性に保存されます。_useSavedPage プロパティーは、現在のページを HTTP セッションから取得して表示するかどうかを指定します。このプロパティーの値を XPRESS 式の結果にすることで、SortingTable コンポーネントが含まれる JSP に戻るときに、現在のページをいつ呼び出しなおすかをフォームまたはビューで制御できます (ブール型)。
たとえば、SortingTable コンポーネントが編集可能な項目を含むクエリー結果を表示する場合、ユーザーが結果テーブルの項目を編集したあとに、編集後の項目を含む結果ページが必ず表示されるようにするには、0 より大きな値を指定します。
WizardPanel
いくつかの子コンポーネントの 1 つ (通常は EditForms) の表示に使用されます。コンポーネント間の移動には、ウィザード形式の「次へ」および「戻る」ボタンが使用されます。
次のプロパティーがあります。
- button - 子コンポーネントの値をボタン行に表示する、子コンポーネントの location プロパティーの値を指定します (String)。
- nextLabel -「次へ」ボタンに表示するラベルを指定します。デフォルト値は、Next です (String)。
- prevLabel -「戻る」ボタンに表示するラベルを指定します (String)。
- cancelLabel -「キャンセル」ボタンに表示するラベルを指定します (String)。
- okLabel -「OK」ボタンに表示するラベルを指定します (String)。
- noOk -「OK」ボタンを非表示にするかどうかを指定します (ブール型)。
- alwaysOk - true に設定すると、「OK」ボタンが表示されます (ブール型)。
- noCancel - true に設定すると、「キャンセル」ボタンは表示されません (ブール型)。
- topButtons - true に設定すると、ページの下部ではなく、ページの上部にボタンが表示されます (ブール型)。
- noButtons - true に設定すると、すべてのボタンが非表示になります (ブール型)。
コンポーネントサブクラスすべてのコンポーネントは、ほとんどのコンポーネントに共通するプロパティーを定義した Component クラスを拡張します。また、一部のコンポーネントは Container クラスを拡張し、別のコンポーネントを格納できるようにします。
各 Component サブクラスは、コンポーネントの基本クラスより詳細にコンポーネントの特性を指定する、数多くのプロパティーを定義します。たとえば、Label コンポーネントは font プロパティーをサポートします。このプロパティーは、ラベルの表示に適用されるフォントを指定します。
表記上の規則
プロパティー名は、常に小文字から始まり、隣接する単語との区切りにはキャメルケース (2 番目以降の複合単語の頭文字を大文字で表記) が使用されます。アクセスメソッド名はプロパティー名の大文字表記で、get または set のプレフィックスが付けられます。たとえば、font というプロパティーには、getfont および setfont メソッドを利用して、Java からアクセスできます。
各プロパティーのデータ型は多様です。各プロパティーの説明を参照してください。次の表は、プロパティー値のデータ型を表現する用語を示しています。
データ型
次の表は、コンポーネントのプロパティーで使用できるデータ型を示しています。
基本コンポーネントクラス
Component クラスは、すべての HTML コンポーネントの基本クラスです。このクラスには、ほとんどのコンポーネントに共通するプロパティーが含まれます。Component クラスのすべてのプロパティーが、すべてのサブクラスに関連するわけではありません。たとえば、Component は、値の制約リストを含めることができる allowedValues プロパティーを定義します。このプロパティーは、Select や MultiSelect のように、値を編集できるサブクラスにのみ関連します。一方で、Container クラスは、編集可能な値を直接表すことは、ほとんどありません。このため、コンポーネントの値に関連するプロパティーとは無関係です。一部のプロパティーは、コンポーネントが特定の Container クラスに含まれる場合にのみ関係します。
name
フィールドの内部名を指定します。すべての編集コンポーネントは名前を持ちます。この名前は、通常、ページに表示されるその他すべてのコンポーネント名と重複しません。多くの場合は、name はビュー属性へのパスを表す文字列です。
コンテナコンポーネントは名前を必要としません。また、割り当てられているすべての名前は無視されます。コンポーネントを Java で構築する場合、コンポーネント名がアプリケーションによって定義されます。XML フォームからコンポーネントを構築する場合は、コンポーネント名はフォームの Field 要素の名前から継承されます。フィールド名は、フォームで使用されるビューオブジェクト内のパス式です。
例
<Field name ='global.firstname'>
name 属性がユーザービューの特定の属性をどのように参照するかについての詳細は、「Identity Manager のビュー」を参照してください。
title
(省略可能) フィールドの外部名を指定します。タイトルは、1 つの列にタイトル、別の列にコンポーネントを持つ HTML テーブルを作成する EditForm コンテナで頻繁に使用されます。
コンポーネントは、独自のタイトルを表示しません。タイトルの表示はコンテナによって制御されます。多くのコンテナはタイトルを無視します。
例
<Property name='title' value='FirstName'/>
<Property name='title'>
<expression>
<concat>
<s>Edit User: </s>
<ref>waveset.accountId</ref>
</concat>
</expression>
</Property>
この例では、フィールドのタイトルの一部が、ユーザーの Identity Manager アカウント ID から動的に取得されます。
value
編集コンポーネントは、NULL 値にも設定できる値を持ちます。多くの場合、値はビューの属性に基づいて、Identity Manager によって自動的に設定されます。一部のコンポーネントでは、現在のビューの内容を無視して値を設定できます。この値は、NULL 値にすることもできます。
Component クラスでは、任意の Java オブジェクトを値として指定できます。サブクラスは、割り当て時、または HTML の生成時に、強制的に特定のデータ型を値に適用します。コンポーネントの値は、ほとんどの場合、常に String オブジェクト、または文字列を含む List オブジェクトです。コンポーネントのデータ型の詳細については、「データ型」の節を参照してください。
ほとんどのコンテナクラスは値を持ちません。割り当てた値は無視されます。ただし、一部のコンテナには値を設定できます (たとえば、TabPanel、WizardPanel)。
XML フォームからコンポーネントを構築するときは、値は、通常、基本となるビューオブジェクトへのパスを示す、コンポーネントの name から継承されます。そのビューオブジェクトには、編集の対象となるすべての値が含まれます。
例
<Property name= 'value' value='false '/>
allowedValues
コンポーネントで使用できる値のオプションリストを指定します。指定した場合、そのコンポーネントで選択できる値は、このリストに含まれる値に限定されます。コンポーネントが値の制限をサポートする場合は、使用できる値のリストはここに格納されます。この値は常にリストであり、その値は通常、文字列です。XML フォームからプロパティーを設定するときに便利なように、使用できる値をカンマ区切りのリストして指定することもできます。
例
<Property name='allowedValues' value= 'Mon, Tue, Wed, Thurs, Fri'/>
<Property name='allowedValues'/>
<expression>
<call name='DaysoftheWeek'/>
</expression>
</Property>
primaryKey
このプロパティーは、SortingTable コンテナでのみ認識されます。SortingTable コンテナは、コンポーネントをテーブル形式にまとめます。各列には、同じクラスのコンポーネントが配置されます。SortingTable を使用することで、任意の列の値に基づいて行をソートできます。通常、ソート順序は、列の各コンポーネントの value によって決定されます。しかし、コンポーネントの値がソートに適さない場合や、比較に適さない場合もあります。このようなときは、それに代わる数値ソートキーを指定できます。
required
true に設定した場合は、フォームの送信前に、フィールドに値を指定しなければなりません。このコンポーネントを EditForm で使用する場合は、保存前にフィールドに値を指定しなければならないことをユーザーに示すために、コンポーネントの後に赤のアスタリスク (*) が表示されます。必須スキーママップ属性を選択した場合は (つまり、値を true に設定した場合は)、そのフィールドは常に必須フィールドとなります。
プロパティーの値は、true または false です。
例
<Property name='required ' value='true '/>
noNewRow
true に設定すると、Identity Manager ページの前のフィールドの横にフィールドが表示されます。設定しない場合、または false に設定した場合は、フィールドは前のフィールド直下の新規行に表示されます。デフォルト値は false です。
このブール型プロパティーは、フィールドが EditForm 表示クラスを使用するフォームに指定されている場合にのみ認識されます。通常、EditForm は各コンポーネントを新しい行に表示し、左の列にタイトル、右の列にコンポーネントを示します。複数のコンポーネントを同じ行に連結することで、表示領域を節約できます。コンポーネントにタイトルも設定されている場合は、そのコンポーネントと前のコンポーネントの間に、強調表示されないテキストとしてタイトルが表示されます。
次の値があります。
value='true ' | 'false '
例
<Property name='noNewRow ' value='true '/>
location
コンテナが複数の表示領域を定義し、特定の領域にコンポーネントを追加しなければならない場合に使用されます。一部のコンテナでは、location プロパティーに値を割り当てることでコンポーネントの配置を制御できます。たとえば、BorderedPanel コンテナは、東西南北と中央の 5 つの異なる表示領域をサポートします。
location プロパティーで認識される値は、コンテナによって定義されます。場所を割り当てない場合、または認識されない場所名を割り当てた場合は、コンテナはコンポーネントをデフォルトの場所に配置します。
help
ユーザーがフィールドの目的を理解できるように、画面に表示する説明テキストを指定します。ほとんどの Identity Manager ページでは、このコンポーネントを設定すると、コンポーネントタイトルの横に <icon> アイコンが表示されます。マウスカーソルをこのアイコンに重ねると、左マージンにヘルプテキストが表示されます。
プロパティーの値には、表示するリテラルテキスト、またはメッセージカタログキーを指定できます。リテラルテキストには HTML マークアップを含めることができます。
カスタムフォームにヘルプを追加する方法の詳細については、「Identity Manager フォーム」の章の「フォームへのガイダンスヘルプの追加」を参照してください。
inlineHelp
Identity Manager ページのコンポーネントの下に表示されるテキストを指定します。
プロパティーの値には、表示するリテラルテキスト、またはメッセージカタログキーを指定できます。リテラルテキストには HTML マークアップを含めることができます。
command
コンポーネントの変更時に送信するコマンドを指定します。ユーザーが値を変更すると、フォーム出力が再計算されます。
このプロパティーは、通常、Button コンポーネントで使用されます。一部のコンポーネントでは、変更が加えられた場合に、アプリケーションがその変更に応じてページを再生成できるように、そのコンポーネントが含まれる HTML フォームをただちに送信する必要があります。command プロパティーに NULL 以外の値を指定することで、この動作を設定できます。
command プロパティーを設定してコンポーネントを変更すると、フォームが送信され、command という追加の非表示パラメータも送信されます。この非表示パラメータの値は、command プロパティーの値です。
command は、ビューに加えられた変更をシステムがどのように処理するかを指定します。command プロパティーは、次のいずれかの値をとります。
表 8-3 command プロパティーの値
値
説明
Save
編集内容を保存します。
Cancel
編集内容を破棄します。
Recalculate
ページを再生成します。
SaveNoValidate
編集内容を保存しますが、フォームの検証は行いません。
フォームでは、command はよく Recalculate に設定されるため、この設定のために短い構文が用意されています。Display 要素は action という属性を持ちますが、これを true に設定した場合、command プロパティーを Recalculate に設定した場合と同じ効果が得られます。
<Display class='Select' action='true'>"
onClick
値を設定すると、その値は、このコンポーネントで生成される input 要素の onClick 属性の値として割り当てられる JavaScript を持つものと見なされます。すべてのコンポーネントが onClick プロパティーをサポートするわけではありません。
このプロパティーが使用されることはあまりありません。使用する場合は、生成される HTML に関する詳しい知識が必要です。このプロパティーを使用する場合は、通常、onClick の値から呼び出す JavaScript 関数を定義する Javascript コンポーネントが、ページに必要です。
例
<Property name='onClick' value="Uncheck(this.form, 'resourceAccounts.selectAll');"/>
onChange
これは command コンポーネントに似ています。このコンポーネントの値には、フィールドの変更時に実行する、任意の JavaScript ステートメントを指定できます。
すべてのコンポーネントが onChange プロパティーをサポートするわけではありません。
このプロパティーが使用されることはあまりありません。使用する場合は、生成される HTML に関する詳しい知識が必要です。このプロパティーを使用する場合は、通常、onChange の値から呼び出す JavaScript 関数を定義する Javascript コンポーネントが、ページに必要です。
nowrap、align、width、valign、および colspan
ほとんどのコンテナは、HTML の table タグで囲んで、サブコンポーネントを配置しています。各コンポーネントに生成される HTML は、通常は td タグに含まれます。一部のコンテナは、nowrap、align、width、および colspan の各プロパティーを認識し、テーブルセルのタグを生成するときにそれらを使用します。これらのコンポーネントを使用することで、コンテナ内のコンポーネントの配置や大きさを調整できます。
- nowrap - 一部のコンポーネントについて、長い文字列のテキストが含まれる場合にどのように表示するかを指定します。nowrap の値を false に設定した場合、または値を指定しなかった場合は、ブラウザはコンポーネントの表示時にテキストを複数の行に分割することがあります。noWrap を true に設定すると、ブラウザはコンポーネントテキストの 1 行での表示を試みます。
- align - あまり使用されません。フォーム上の要素の横方向の位置を調整します。指定できる値は、left (左)、right (右)、および center (中央) です。
- valign - あまり使用されません。コンポーネントの縦方向の位置を指定します。指定できる値は、top (上)、bottom (下)、および middle (中間) です。
- colspan - 非推奨です。
例
<Property name= 'width' value='3'/>
<Field name='Start Day' prompt='Day' nowrap='true'/>
htmlFormName
コンポーネントが表示される HTML の <FORM> タグの名前属性を設定するときに使用されます。これにより、コンポーネントで使用される JavaScript 関数が、適切な HTML フォームを確実に参照します。デフォルト値が mainform であるため、このプロパティーは、mainform 以外のフォームにコンポーネントを表示する場合にのみ使用されます。
例
<Property name='htmlFormName' value='endUserNavigation'>
基本コンポーネント
BackLink
前のページに戻るリンクを表示します。このコンポーネントは、ブラウザの「戻る」ボタンと同じように機能します。ただし、このリンクはページ上の使いやすい場所に配置できます。
この表示コンポーネントには、次のプロパティーがあります。
例
<Field name='back'>
<Display class='BackLink'>
<Property name='value' value='previous page'/>
</Display>
</Field>
Button
ボタンを表示します。ボタンは通常、そのボタンが含まれるフォームの送信に使用されますが、任意の JavaScript を実行するように定義することもできます。
この表示コンポーネントには、次のプロパティーがあります。
- name - ユーザーがこのボタンをクリックしたときに送信されるパラメータの名前を指定します。このプロパティーは省略可能です。指定しなかった場合は、デフォルト値の command が適用されます。
- value - ユーザーがこのボタンをクリックしたときに送信されるパラメータの値を指定します。
- label - ボタンに表示されるテキストを指定します。
- command - name パラメータとともに送信するオプション値 (たとえば、Save、Cancel、Recalculate) を指定します。
- postURL - フォームの代替送信先 URL を指定します。この値は、JSP に指定されている URL に優先して適用されます。
- hiddenID - フォーム送信データに含まれる id パラメータのオプション値を指定します。
例
<Display class ='Button'>
<Property name ='label' value ='Change Password'/>
<Property name ='value' value ='Recalculate'/>
</Display>
Checkbox
チェックボックスを表示します。チェックボックスを選択すると、そのボックスの値は true となります。選択されていないボックスの値は false となります。
この表示コンポーネントには、次のプロパティーがあります。
- label - (省略可能) チェックボックスの右に表示されるラベルを指定します。これはコンポーネントの横に表示されますが、タイトル列には表示されません。
- leftLabel - ラベルがチェックボックスの左に表示されるように指定します。
- checkAll - このチェックボックスを「すべてを選択」チェックボックスとして機能させる場合に使用されます。この値は、その他のチェックボックスにも反映されます。プロパティーの値は、HTML ページのその他のチェックボックスの名前と一致する正規表現です。
- uncheck - 同期された一連のチェックボックスの「すべてを選択」チェックボックスを表す、別のチェックボックスフィールドの名前を指定します。これを設定すると、このチェックボックスの選択状態が変わるたびに、「すべてを選択」チェックボックスの選択が解除されます。
- syncCheck - このプロパティーが設定されているチェックボックスフィールドの値との同期を保つ、別のチェックボックスフィールドの名前を指定します。これを設定すると、このチェックボックスの値が変更されるたびに、同期されているチェックボックスに同じ値が設定されます。
- syncUncheck - このプロパティーが設定されているチェックボックスフィールドの値が false に変更された場合に同期を保つ、別のチェックボックスフィールドの名前を指定します。これを設定すると、このチェックボックスの値が false に変更されるたびに、同期されているチェックボックスの値も false (未選択) に設定されます。
- syncCheckAllTo - このプロパティーが設定されているチェックボックスフィールドの値が false に変更された場合に、正規表現と一致するすべての「すべてを選択」チェックボックスとの同期が維持されます。このプロパティーの値は、1 つまたは複数の「すべてを選択」チェックボックスを表す正規表現です。
- syncUncheckAll - このプロパティーが設定されているチェックボックスフィールドの値が false に変更された場合に同期を保つ、別のチェックボックスフィールドの名前を指定します。これを設定すると、このチェックボックスの値が false に変更されるたびに、同期されているチェックボックスの値も false (未選択) に設定されます。
- syncCheckTo - このプロパティーが設定されているチェックボックスフィールドの値は、正規表現と一致するすべてのチェックボックスと同期を保ちます。このプロパティーが設定されているチェックボックスフィールドの値が変更されるたびに、同期されているチェックボックスに同じ値が設定されます。このプロパティーの値は正規表現です。
- value - チェックボックスの状態を決定します。値が論理 true の場合は、チェックマークが表示されます。
例
<Field name='accounts[NT].passwordExpired'>
<Display class='Checkbox'>
<Property name='title 'value='Password is Expired'/>
</Display>
</Field>
DatePicker
ユーザーが、カレンダを表示するアプレットを使用して、日付を指定できるようにします。フィールドは、カレンダアイコンの形式で表示されます。このアイコンをクリックすると、別のウィンドウにカレンダアプレットが呼び出されます。
次のプロパティーがあります。
- format - 日付を表示するための日付フォーマットを指定します。値には、y、M、または d の任意のフォーマット文字を使用する、Java 形式の日付フォーマット文字列を指定できます。また、ISO フォーマット (yyyy-MM-dd) を指定する値 iso、またはロケールを反映したフォーマット (ロケール用の Java デフォルト) を指定する値 local も指定できます。設定しなかった場合は、「MM/dd/yyyy」のフォーマットが適用されます。
- multiField - 日付要素ごとに、独立した入力フィールドを表示するかどうかを指定します。値を設定しなかった場合、または false に設定した場合は、適切にフォーマットされた日付テキストを入力するための 1 つのテキストフィールドが使用されます。
- value - カレンダで、現在の日付として強調表示する日付を指定します。日付は、Date オブジェクトまたは String オブジェクトのいずれかから解析できます。
例
<Field name='ExpireDate'>
<Display class='DatePicker'>
<Property name='title' value='Set Password Expire date'/>
<Property name='format'= value='iso'/>
</Display>
</Field>
FileUpload
ユーザーがファイルを選択し、それをサーバーにアップロードするためのテキストフィールドと「参照」ボタンを表示します。ファイル (ユーザーオブジェクトや設定オブジェクトなど) から Identity Manager にデータをインポートするときは、このコンポーネントを使用します。このコンポーネントは、Text コンポーネントがサポートするすべてのプロパティーをサポートします。
Html
このコンポーネントを使用することで、HTML ページに格納されているフォームフィールドやその他のコンポーネントに、JavaScript など任意の HTML マークアップを挿入できます。
このコンポーネントには、html という 1 つのプロパティーがあります。これは、ページに表示する文字列の指定に使用されます。
例
HtmlPage
ここでは、ルート HTML ページについて説明します。このコンポーネントには、任意の HTML とブラウザ JavaScript を含めることができます。次のプロパティーがあります。
- commentScripts - JavaScript 用に出力される <script> タグを、コメント内に入れるかどうかを指定します。
- title - ページのタイトルを指定します。String または Message のデータ型でも指定できますが、通常は String として指定されます。
- postUrl - メインフォームの送信時に Identity Manager が送信する URL を指定します。
- messages - 表示する情報メッセージを指定します。
- comments - ページに含める特別なコメントを指定します。このプロパティーは、通常、GenericEditForm および FormConverter メソッドで例外が検出された場合に使用されます。
- focussedFieldName - 最初に選択されるフィールドの名前を指定します。通常は NULL に設定されます。このプロパティーの値は、最初のテキストフィールドとして、またはテキストフィールドが存在しない場合に最初のフィールドとして計算されます。
- activeControl - 最後にアクティブであると認識されるフォームフィールドの名前を指定します (String)。
InlineAlert
エラー、警告、成功、または情報のアラートボックスを表示します。このコンポーネントは、通常はページの上部に配置されます。タイプが InlineAlert$AlertItem の子コンポーネントを定義することで、1 つのアラートボックスに複数のアラートを表示できます。
この表示コンポーネントには、次のプロパティーがあります。
- alertType - 表示するアラートの種類を指定します。このプロパティーは、適用するスタイルと使用する画像を決定します。指定できる値は、error (エラー)、warning (警告)、success (成功)、および info (情報) です。このプロパティーのデフォルト値は info です。このプロパティーは、InlineAlert でのみ有効です。
- header - アラートボックスに表示するタイトルを指定します。これは、文字列またはメッセージのいずれかのオブジェクトです。このプロパティーは、InlineAlert または InlineAlert$AlertItem で有効です。
- value - 表示するアラートメッセージを指定します。この値は、文字列またはメッセージのいずれかのオブジェクトです。このプロパティーは、InlineAlert または InlineAlert$AlertItem で有効です。
- linkURL - アラートの下部に表示するオプション URL を指定します。このプロパティーは、InlineAlert または InlineAlert$AlertItem で有効です。
- linkText - linkURL のテキストを指定します。これは、文字列またはメッセージのいずれかのオブジェクトです。このプロパティーは、InlineAlert または InlineAlert$AlertItem で有効です。
- linkTitle - linkURL のタイトルを指定します。これは、文字列またはメッセージのいずれかのオブジェクトです。このプロパティーは、InlineAlert または InlineAlert$AlertItem で有効です。
単一のアラートメッセージの例
<Field>
<Display class='InlineAlert'>
<Property name='alertType' value='warning'/><Property name='header' value='Data not Saved'/>
<Property name='value' value='The data entered is not yet saved.
Please click Save to save the information.'/></Display>
</Field>
複数のアラートメッセージの例
alertType は、InlineAlert プロパティー内のみに定義します。その他のプロパティーは InlineAlert$AlertItems に定義できます。
<Field>
<Display class='InlineAlert'>
<Property name='alertType' value='error'/>
</Display>
<Field>
<Display class='InlineAlert$AlertItem'>
<Property name='header' value='Server Unreachable'/>
<Property name='value' value='The specified server could not
be contacted. Please view the logs for more information.'/>
<Property name='linkURL' value='viewLogs.jsp'/>
<Property name='linkText' value='View logs'/>
<Property name='linkTitle' value='Open a new window with
the server logs'/>
</Display>
</Field>
<Field>
<Display class='InlineAlert$AlertItem'>
<Property name='header' value='Invalid IP Address'/>
<Property name='value' value='The IP address entered is
in an invalid subnet. Please use the 192.168.0.x subnet.'/> </Display>
</Field>
</Field>
Javascript
ページに事前にフォーマットされている Javascript を挿入するときに使用されます。これは、コンポーネントで onClick または onChange プロパティーを使用し、カスタム JavaScript 関数を呼び出す場合に便利です。
name プロパティーの設定は必須ではありませんが、XML フォームからコンポーネントを作成する場合は、設定するようにしてください。フィールドをループさせたり、含めたりする機能などを使用するときに、同じスクリプトを含む複数の JavaScript コンポーネントをページに追加できます。同じ名前の JavaScript コンポーネントは、HTML の生成時に 1 回だけ取り込まれます。
例
<Display class='Javascript'>
<Property name='script'>
<String>
function setTextFromSelect(sel, textFieldName) {
if ( sel == null || sel.inchange ) return;
sel.inchange = true;
var textField = sel.form.elements[textFieldName];
if ( textField == null ) return;
textField.value = sel.value;
sel.selectedIndex = 0;
sel.inchange = false;
} // setTextFromSelect(sel, textFieldName)
</String>
</Property>
<Property name='noNewRow' value='true'/>
</Display>
コンポーネントには、JavaScript テキストを格納できる script という拡張プロパティーがあります。
Label
テキストの文字列を表示します。
この表示コンポーネントには、次のプロパティーがあります。
- value - 表示するテキストを定義します。この値は、文字列、または文字列のリストのいずれかです。値がリストの場合は、リストに含まれる各文字列が別々の行に表示されます。
- leftPad - ラベルの左に挿入する空白文字の数を指定します。
- pad - ラベルの左右に挿入する空白文字の数を指定します。
- rightPad - ラベルの右に挿入する空白文字の数を指定します。
<Field>
<Display class='Label'>
<Property name='title' value='Account ID'/>
<Property name='value'>
<ref>waveset.accountId,/ref>
</Property>
</Display>
</Field>
- font - フォントスタイルを指定します。指定できる値は、Identity Manager のインストールディレクトリ内の styles/style.css ファイルに定義されているいずれかのスタイル名です。
- color - ラベルの色を指定します。色の値の指定には、HTML の標準色フォーマット (#xxxxxx) を使用します。
Link
ページにリンクを配置します。
次のプロパティーがあります。
- URL - ターゲット URL (Uniform Resource Locator) を指定します。
- imageURL - (省略可能) リンクの右に表示されるアイコンまたは画像に URL を指定します。
- imageURL2 - (省略可能) 最初の画像の右に表示されるアイコンまたは画像に URL を指定します。
- hoverText - マウスカーソルを最初の画像または 2 番目の画像に合わせたときに表示されるテキストを指定します。
- id - (省略可能) リンクの id クエリー引数として含められる値を指定します。
- arguments - (省略可能) クエリー引数として含められる名前と値のペアのセットを指定します。
- extraURL - (省略可能) ベース URL と引数の後に含められる、追加の URL フラグメントを指定します。
例
<Field>
<Display class='Link'>
<Property name='name' value='Request
Group Access'/>
<Property name='URL'
value='user/processLaunch.jsp?newView=true'>
<Property name='id' value='Group Request
Process'/>
</Display>
</Field>
注
Link コンポーネントは、<map> 要素を使用して名前と値のペアを渡すことができる、フォーム内の唯一の場所です。次の例の <map> 要素には、String をブール型の値に、また、String を List にマッピングするためのペアがいくつか含まれています。
<invoke class='com.waveset.ui.FormUtil'
name='getOrganizationsDisplayNames'>
<ref>:display.session</ref>
<map>
<s>filterVirtual</s>
<o><Boolean>true</Boolean></o>
<s>current</s>
<list>
<ref>original.orgParentName</ref>
</list>
<s>excluded</s>
<list><ref>orgName</ref></list>
</map>
</invoke>
LinkForm
メニューと同様に、リンクの箇条書きリストを表示します。
NameValueTable
このコンポーネントは、名前と値のペアを 2 列の簡易テーブルに表示するときに使用されます。このコンポーネントは、含まれるデータを直接表示します。
データはいくつかの形式で指定できます。
プロパティーには、true に設定した場合に値を含まない行を非表示にする _hideEmptyRows があります。
MultiSelect
複数の選択項目を持つテキストボックスを表示します。これは、1 つのボックスに含まれる定義済みの値セットを選択ボックスに移動できる、2 つの部分から構成されるオブジェクトです。左のボックスの値は allowedValues プロパティーで指定します。多くの場合、この値は FormUtil.getResources などの Java メソッドを呼び出すことで動的に取得されます。複数選択ボックスの右側部分に表示される値には、フィールド名によって特定される関連ビュー属性の現在値が適用されます。
この 2 部構成のオブジェクトのフォームタイトルは、availabletitle プロパティーと selectedtitle プロパティーによって設定されます。
MultiSelect コンポーネントがアプレットを使用しないように設定するときは、noApplet プロパティーを true に設定します。
注
Safari ブラウザが稼動するシステムで Identity Manager を実行する場合は、MultiSelect コンポーネントを使用するすべてのフォームで、noApplet オプションの設定をカスタマイズしてください。このオプションを次のように設定します。
<Display class='MultiSelect'>
<Property name='noApplet' value='true'/>
...
この表示コンポーネントには、次のプロパティーがあります。
- availableTitle - 表示されるボックスのタイトルを指定します。
- selectedTitle - 選択されたボックスのタイトルを指定します。
- ordered - テキストボックスの項目リスト内で、選択している項目を上下に移動できることを定義します。値を true に設定すると、選択している項目を上下に移動させるための追加ボタンが表示されます。
- allowedValues - 複数選択ボックスの左側に関連付ける値を指定します。この値は、必ず文字列のリストとして指定してください。注: このボックスへの値の取り込みには <Constraints> 要素を使用できますが、この方法はお勧めしません。
- sorted - 両方のボックスの値をアルファベット順にソートすることを指定します。
- noApplet - MultiSelect コンポーネントがアプレットとともに実装されるか、標準 HTML 選択ボックスのペアとともに実装されるかを指定します。デフォルトでは、アプレットを使用するように設定されます。これは、値の長いリストを処理する場合に効果的です。Safari ブラウザが稼動するシステムでのこのオプションの使用については、前述の注記を参照してください。
- typeSelectThreshold - noApplet プロパティーが true に設定されている場合にのみ適用されます。このコンポーネントは、allowedValue リストの下に先行入力選択ボックスを表示するかどうかを制御します。左の選択ボックスのエントリの数が、このプロパティーによって定義されるしきい値に達すると、選択ボックスの下に追加のテキスト入力フィールドが表示されます。テキストフィールドに文字を入力するときに選択ボックスがスクロールされ、入力した文字と一致するエントリが存在する場合に、それが表示されます。たとえば、w と入力すると、名前が w から始まる最初のエントリまで、選択ボックスがスクロールされます。
- width - 選択しているボックスの幅を、ピクセル単位で指定します。デフォルト値は、150 です。
- height - 選択しているボックスの高さを、ピクセル単位で指定します。デフォルト値は、400 です。
例
<Field name='accounts[LDAP].LDAPDept' type='string'>
<Display class='MultiSelect' action='true'>
<Property name='title' value='LDAP Department'/>
</Display>
<Constraints>
<o>
<List>
<String>Sales</String>
<String>Marketing</String>
<String>International Sales</String>
</List>
</o>
</Constraints>
</Field>
Radio
1 つまたは複数のラジオボタンの水平リストを表示します。ユーザーが一度に選択できるラジオボタンは 1 つだけです。コンポーネントの値が NULL の場合、または許可される値のいずれとも一致しない場合は、ボタンは選択されません。
この表示コンポーネントには、次のプロパティーがあります。
- title - すべてのラジオボタンのタイトルを指定します。
- labels - ボタンラベルの代替リストを指定します。labels リストの長さは、allowedValues リストの値と同じ長さにしてください。代替ラベルは、値が暗号化されている場合に使用されます。たとえば、H、M、S などの文字コードを値として指定できますが、これは時、分、および秒のボタンラベルの識別に使用されるプロパティーです。
- allowedValues - 各ボタンに割り当てる値を指定します。この値は、必ず文字列のリストとして指定してください。
- value - ボタンの値を指定します。この値は 1 つの文字列を受け付けます。設定しない場合は、ラベルと同じ値が適用されます。
例
<Field name='attributes.accountLockExpiry.unit'>
<Display class='Radio'>
<Property name='noNewRow' value='true'/>
<Property name='labels'>
<List>
<String>UI_TASKS_XML_SCHED_MINUTES</String>
<String>UI_TASKS_XML_SCHED_HOURS</String>
<String>UI_TASKS_XML_SCHED_DAYS</String>
<String>UI_TASKS_XML_SCHED_WEEKS</String>
<String>UI_TASKS_XML_SCHED_MONTHS</String>
</List>
</Property>
<Property name='allowedValues'>
<List>
<String>minutes</String>
<String>hours</String>
<String>days</String>
<String>weeks</String>
<String>months</String>
</List>
</Property>
</Display>
</Field>
SectionHead
text プロパティーの値によって定義される、新しいセクション見出しを表示します。これは Label クラスを拡張したもので、font プロパティーに大きな太字のテキストとなるスタイルを設定します。また、pad プロパティーはゼロに設定され、デフォルトの 2 文字分の隙間は取り除かれます。長いフォームを、目立つラベルで複数のセクションに分割する場合に使用されます。
この表示コンポーネントのプロパティーは、表示するテキストを指定する text のみです。
例
<Field>
<Display class='SectionHead'>
<Property name='text' value ='Calculated Fields'/>
</Display>
</Field>
Select
1 つの項目を選択できるリストボックスを表示します。このリストボックスの値は、allowedValues プロパティーで指定します。
この表示コンポーネントには、次のプロパティーがあります。
- allowedValues - リストボックスに表示される、選択できる値のリストを表示します。
- allowedOthers - これを設定すると、allowedValues リストに指定されていない初期値が許容され、リストに追加されます。
- autoSelect - true に設定すると、フィールドの初期値が NULL の場合に、allowedValues リストの最初の値が自動的に選択されます。
- multiple - true に設定すると、複数の値を選択できるようになります。
- nullLabel - どの値も選択していない場合に、リストボックスの最上部に表示するテキストを指定します。
- optionGroupMap - セレクタが、<optgroup> タグを使用して、グループ内のオプションを表示できるようになります。マップのキーがグループラベルとなり、要素が選択可能なリスト項目になるように、マップをフォーマットしてください。値を表示するには、それらの値が allowedValues のメンバーである必要があります。
- size - (省略可能) 表示する行の最大数を指定します。行数がこの値を超える場合は、スクロールバーが追加表示されます。
- sorted - true に設定すると、リストの値がソートされます。
- valueMap - raw 値と表示値をマップします。
このコンポーネントは、command プロパティーと onChange プロパティーをサポートします。
例
<Field name='city' type='string'>
<Display class='Select'>
<Property name='title' value='City'/>
<Property name='allowedValues'>
<List>
<String>Austin</String>
<String>Portland</String>
<String>New York</String>
</List>
</Property>
</Display>
</Field>
Text
通常のテキスト入力ボックスを表示します。
この表示コンポーネントでよく使用されるプロパティーは次のとおりです。
- size - テキスト入力ボックスに表示される文字数を指定します。入力ボックスのサイズは、ボックス内のテキストの長さに応じて再計算されます。
- notrim - HTML フォームから送信されるテキストをトリミングするかどうかを指定します。true に設定すると、空白文字が削除されません。空白文字を維持するには、このオプションを設定します。
- noTranslate - true に設定すると、メッセージキーの値が代替値としてではなく、そのまま表示されます。デフォルトは false です。
- maxLength - テキストボックスで編集できる文字列の最大長を指定します。
- multiValued - true に設定すると、値を追加、削除できるように、「追加」ボタンと「削除」ボタンを持つテキストボックスが表示されます。
- secret - 入力したテキストの代わりに、アスタリスク (*****) が表示されます。このオプションは、パスワードフィールドで頻繁に利用されます。
- readOnly - 読み取り専用のテキストを表示します。ユーザーがこのテキストを編集することはできません。このプロパティーは、たとえば、管理者がユーザーアカウントを作成または編集するときに、リソース属性に関する必要情報を表示できるようにする場合などに使用されます。
- submitOnEnter - このプロパティーが設定され、Text フィールドが選択されると、ユーザーが Enter キーを押したときに、プロパティー値として指定されているコマンドを使用してフォームが送信されます。次の例では、ユーザーが「保存」ボタンをクリックした場合と同様に、フォームが送信されます。
例
<Field name='variables.identityID'>
<Display class='Text'>
<Property name='required'>
<Boolean>true</Boolean>
</Property>
<Property name='title' value='Identity ID'/>
<Property name='size' value='32'/>
<Property name='maxLength' value='128'/>
<Property name='submitOnEnter' value='Save'/>
</Display>
</Field>
TextArea
複数行のテキスト入力ボックスを表示します。
この表示コンポーネントには、次のプロパティーがあります。
- rows - テキスト領域の行数を指定します (Integer)。
- columns - テキスト領域の列数を指定します (Integer)。
- readOnly - テキスト入力ボックスに、読み取り専用テキストを表示します。true に設定すると、このコンポーネントの境界線は表示されなくなります (ブール型)。
- format - setValue() の動作を制御し、getPostData() から返されるオブジェクトのタイプを決定します (String)。
- sorted - true に設定すると、テキスト領域の行をソートできるようになります。この機能は、自由形式のテキストではなく、選択項目のリストをテキスト領域に表示する場合に便利です (ブール型)。
- noTrim - HTML フォームから送信されるテキストをトリミングするかどうかを指定します。デフォルトの設定では、空白文字は削除されます。空白文字を維持するには、この値を true に設定します。
例
5 つの表示行を持ち、70 文字で行を折り返すテキストボックスを表示するには、次のように設定します。
<Field name='Description'>
<Display class='TextArea'>
<Property name='rows' value='5'/>
<Property name='columns' value='70'/>
</Display>
</Field>
定義されている表示行を超えてテキストを入力すると、テキスト領域にスクロールバーが追加表示されます。