![]() | |
Sun™ Identity Manager 8.0 ワークフロー、フォーム、およびビュー |
第 6 章
HTML 表示コンポーネントこの章では、Identity Manager の HTML 表示コンポーネントライブラリについて説明します。HTML 表示コンポーネントは、フォームのカスタマイズで使用されます。フォームのカスタマイズについては、第 2 章「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 コンポーネントを拡張します。
- buttonDivStyle - ボタンを囲む div に適用する CSS クラスを指定します
- defaultAlign - その行のボタンのデフォルト配置を指定します。align プロパティーがその行に明示的に設定されていない場合には、Identity Manager はこのプロパティーを参照します。デフォルトは left です。
- defaultDivider - そのボタン行の上下に境界バーを表示するかどうかを指定します。divider プロパティーがその行に明示的に設定されていない場合には、Identity Manager はこのプロパティーを参照します。デフォルトは false です。
- divider - 境界バーを水平の線で表示するか、空白行として表示するかを指定します。true に設定すると、境界バーは水平線として表示されます (たとえば、<hr>) (ブール型)。
- dividerStyle - 境界バーを表示する場合に、そのスタイルを設定するために使用する CSS クラスを指定します。このプロパティーが設定されていない場合は、Identity Manager は横罫線を表示します。デフォルトは unset です。
- pad - ボタン行と隣接コンポーネントの間のどこに空白を挿入するかを指定します。指定できるのは、上下の間隔 (top、bottom) です。値が NULL の場合は、間隔はなくなります。デフォルト値は top です。
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 の値に設定されます。
- border - EditForm コンポーネントを含むテーブルの幅をピクセル単位で指定します。デフォルトは 0 で、境界線が表示されないことを示します。
- cellpadding - EditForm コンポーネントを含むテーブルのセルパディングをピクセル単位で指定します。デフォルトは 5 です。
- cellspacing - EditForm コンポーネントを含むテーブルのセル間隔をピクセル単位で指定します。デフォルトは 0 です。
- componentTableWidth - EditForm の幅を指定します (ピクセル単位)。指定しない場合は、デフォルト値の 400 ピクセル、または EditForm の defaultComponentTableWidth グローバルプロパティーの値が適用されます。
- defaultComponentTableWidth - Identity Manager が各コンポーネントを表示するためのテーブルの幅をピクセル単位で指定します。componentTableWidth プロパティーが EditForm に明示的に設定されていない場合には、Identity Manager はこのプロパティーを参照します。このコンポーネントが設定されていない場合は、コンポーネントテーブルの幅は指定されません。
- defaultRequiredAnnotationLocation - requiredAnnotation のデフォルトの表示位置をコンポーネントとの相対位置 (left、right、または none) で指定します。requiredMarkerLocation プロパティーが EditForm に明示的に設定されていない場合には、Identity Manager はこのプロパティーを参照します。デフォルトは right です。
- evenRowClass - EditForm テーブルの偶数行のスタイルを設定するために使用する CSS クラスを指定します (noAlternatingRowColors プロパティーが true に設定されていない場合)。デフォルトは formevenrow です。
- helpIcon - コンポーネントの吹き出しヘルプメッセージに対して表示するアイコンを指定します。デフォルトは images/helpi_gold.gif です。
- noAlternatingRowColors - EditForm の行を同じ色で表示するかどうかを指定します。noAlternatingRowColors を true に設定すると、EditForm のすべての行が同じ色で表示されます。指定しない場合は、デフォルト値の false が適用されます。
- oddRowClass - EditForm テーブルの奇数行のスタイルを設定するために使用する CSS クラスを指定します (noAlternatingRowColors プロパティーが true に設定されていない場合)。デフォルトは formoddrow です。
- requiredAnnotation 必須フィールドの横に表示する注釈を指定します。デフォルトの画像は、赤色のアスタリスクです。
- requiredClass - 必須フィールドの凡例のスタイルを設定するために使用する CSS クラスを指定します。デフォルトは errortxt です。
- requiredLegendLocation - フォームに必須フィールドがある場合に、必須凡例を表示する位置 (top または bottom) を指定します。デフォルトは bottom です。
- rowPolarity - テーブル内で灰色の行と白色の行を交互に表示するときの極性を指定します。デフォルトは true です。値を false にすると、極性が反転して、最初のフォームフィールドの背景が白色になります。次のコード例では、テーブルの最初のフォームフィールドの背景が白色になります。
- tableClass - EditForm コンポーネントを含むテーブルのスタイルを設定するために使用する CSS クラスを指定します。
- tableWidth - Identity Manager が EditForm コンポーネントを表示するためのテーブルの幅をピクセル単位で指定します。デフォルトは 400 です。
- titleClass - コンポーネントのヘルプメッセージのスタイルを設定するために使用する CSS クラスを指定します。
Menu
Menu、MenuBar、および MenuItem の 3 つのクラスで構成されます。
Menu には次のプロパティーが含まれます。
MenuBar には次のプロパティーが含まれます。
MenuItem には次のプロパティーが含まれます。
MenuBar または MenuItem には次のプロパティーを設定できます。
次の XPRESS の例では、2 つのタブを持つメニューが作成されます。2 番目のタブには 2 つのサブタブがあります。
コード例 6-1 Menu、MenuItem、および MenuBar コンポーネントの実装
<Display class='Menu'/>
<Field>
<Display class='MenuItem'>
<Property name='URL' value='user/main.jsp'/>
<Property name='title' value='Home' />
</Display>
</Field>
<Field>
<Display class='MenuBar' >
<Property name='title' value='Work Items' />
<Property name='URL' value='user/workItemListExt.jsp' />
</Display>
<Field>
<Display class='MenuItem'>
<Property name='URL' value='user/workItemListExt.jsp'/>
<Property name='title' value='Approvals' />
</Display>
</Field>
<Field>
<Display class='MenuItem'>
<Property name='URL' value='user/otherWorkItems/listOtherWorkItems.jsp'/>
<Property name='title' value='Other' />
</Display>
</Field>
</Field>
Identity Manager ユーザーインタフェースで、水平方向ナビゲーションバーは enduser.xml 内のエンドユーザーナビゲーションユーザーフォームによって呼び出されます。
userHeader.jsp は、すべての Identity Manager ユーザーインタフェースページに含まれますが、これには menuStart.jsp という名前の別の JSP が含まれています。この JSP から、2 つのシステム設定オブジェクトが呼び出されます。
style.css には、メニューの表示方法を決定する CSS スタイルクラスが含まれています。
Panel
もっとも基本的なコンテナを定義します。Panel は、単純な直線リストに子要素を表示します。
次のプロパティーがあります。
デフォルトの配置は垂直ですが、水平に設定することができます。
Selector
単一値または複数値のフィールド (それぞれ Text、ListEditor コンポーネントに相当) と、その下の検索フィールドを設定します。検索を実行すると、Identity Manager で検索フィールドの下に結果が表示され、値フィールドに結果が取り込まれます。
その他のコンテナコンポーネントとは異なり、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 - 選択リストの値をソートするかどうかを指定します。multivalued であり ordered でない場合は、値リストもソートされます (ブール型)。
- clearFields -「クリア」ボタンをクリックしたときに、リセットするフィールドのリストを指定します (List)。
次のプロパティーは、複数値のコンポーネントでのみ有効です。
次のプロパティーは、単一値のコンポーネントでのみ有効です。
SimpleTable
コンポーネントをグリッドに配置します。オプションとして、上部に列のタイトル行も設定できます。
次のプロパティーがあります。
TabPanel
次に示されるタブの行を表示する、タブ付きパネルの表示に使用されます。デフォルトでは、タブは水平に並べられます。
次のプロパティーがあります。
- leftTabs - true に設定すると、上部マージンにではなく、左マージンにそろえてタブが配置されます (ブール型)。
- border - true に設定すると、タブの下のメインパネルの周囲に境界線を表示します (ブール型)。
- renderTabsAsSelect - true に設定すると、タブの代わりに選択ドロップダウンとしてタブを表示します。これは、ブラウザの水平スクロールが必要になるほどタブの数が多いフォームで便利です。タブの左マージン配置と組み合わせて使用しないでください。
- tabAlignment - ページ内容からの相対位置としてタブの位置を決定します。有効な値は、left (左、デフォルト設定)、top (上)、right (右)、bottom (下)、center (中央)、および middle (中間) です。
- validatePerTab -- true に設定すると、ユーザーが別のタブに切り替えた直後に Identity Manager によって検証式が実行されます。
Row
水平配置に対応したパネルの作成に使用されます。
SortingTable
列の見出しを指定して内容をソートできるテーブルの作成に使用されます。このテーブルの内容は、子コンポーネントによって定義されます。列ごとに 1 つの子コンポーネントを作成してください (columns プロパティーで定義)。通常は、列は FieldLoop に格納されます。
テーブルセルの表示時に、このコンポーネントには、子コンポーネントの align、valign、および width プロパティーが適用されます。
次のプロパティーがあります。
- emptyMessage - テーブルに行がないときにテーブルに表示する文字列またはメッセージキーを指定します。このプロパティーを省略すると、Identity Manager は汎用メッセージを表示します。
- 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 コンポーネントが編集可能な項目を含むクエリー結果を表示する場合、ユーザーが結果テーブルの項目を編集したあとに、編集後の項目を含む結果ページが Identity Manager で必ず表示されるようにするには、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 からアクセスできます。
各プロパティーのデータ型は多様です。各プロパティーの説明を参照してください。次の表は、プロパティー値のデータ型を表現する用語を示しています。
データ型
次の表は、コンポーネントのプロパティーで使用できるデータ型を示しています。
表 6-2 HTML コンポーネントプロパティーのデータ型
データ型
説明
null
プロパティーが値を持たないことを表します
String
もっとも一般的なデータ型です。String 値は、通常は Java の String クラスのインスタンスで表現されます。一部のコンポーネントは、任意のクラスの値です。これは、強制的に、文字列に toString メソッドを適用することを意味します。
特に明記されていない限り、すべてのプロパティーのデータ型は String であると考えてください。
例: <String>Hello World</String>
文字列の List
値が、1 つまたは複数の文字列のリストであることを表します。Java では、この値は常に List クラスのインスタンスとして実装されます。また、リストを構成する要素は、String クラスのインスタンスです。
例:
<List>
<String>choice one</String>
<String>choice two</String>
</List>
基本コンポーネントクラス
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 マークアップを含めることができます。
カスタムフォームにヘルプを追加する方法の詳細については、「フォームへのガイダンスヘルプの追加」を参照してください。
inlineHelp
Identity Manager ページのコンポーネントの下に表示されるテキストを指定します。
プロパティーの値には、表示するリテラルテキスト、またはメッセージカタログキーを指定できます。リテラルテキストには HTML マークアップを含めることができます。
command
コンポーネントの変更時に送信するコマンドを指定します。ユーザーが値を変更すると、フォーム出力が再計算されます。
このプロパティーは、通常、Button コンポーネントで使用されます。一部のコンポーネントでは、変更が加えられた場合に、アプリケーションがその変更に応じてページを再生成できるように、そのコンポーネントが含まれる HTML フォームをただちに送信する必要があります。command プロパティーに NULL 以外の値を指定することで、この動作を設定できます。
command プロパティーを設定してコンポーネントを変更すると、フォームが送信され、command という追加の非表示パラメータも送信されます。この非表示パラメータの値は、command プロパティーの値です。
command は、ビューに加えられた変更をシステムがどのように処理するかを指定します。command プロパティーは、次のいずれかの値をとります。
表 6-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');"/>
注
フォームがリポジトリに格納されると、Identity Manager は常に引用符 (一重) で属性値を囲みます。属性値内で引用符を使用するときは、それを ' に置き換えます。このエスケープを使用しない場合は、XPRESS の s 式で文字列を表現します。
<Property name='onClick'>
<s>Uncheck(this.form, 'resourceAccounts.selectAll'); </s>
</Property>"
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
前のページに戻るリンクを表示します。このコンポーネントは、ブラウザの「戻る」ボタンと同じように機能します。ただし、このリンクはページ上の使いやすい場所に配置できます。
この表示コンポーネントには、次のプロパティーがあります。
例
Button
ボタンを表示します。ボタンは通常、そのボタンが含まれるフォームの送信に使用されますが、任意の JavaScript を実行するように定義することもできます。
この表示コンポーネントには、次のプロパティーがあります。
- class - 有効になっているボタンに使用する CSS クラスを指定します。デフォルトは formbutton です。
- command - name パラメータとともに送信するオプション値 (たとえば、Save、Cancel、Recalculate) を指定します。
- disabledclass - 無効になっているボタンに使用する CSS クラスを指定します。デフォルトは formbutton です。
- hiddenID - フォーム送信データに含まれる id パラメータのオプション値を指定します。
- label - ボタンに表示されるテキストを指定します。
- linkClass - ボタンがリンクとして表示されるときに使用する CSS クラスを指定します。
- name - ユーザーがこのボタンをクリックしたときに送信されるパラメータの名前を指定します。このプロパティーは省略可能です。指定しなかった場合は、デフォルト値の command が適用されます。
- onMouseOver - ボタンの onMouseOver イベントで実行する Javascript を指定します。このプロパティーを使用して、ボタンの上にマウスがあるときのボタンのスタイルを変更できます。
- onMouseOut - ボタンの onMouseOut イベントで実行する Javascript を指定します。このプロパティーを使用して、ボタンからマウスが離れたときのボタンのスタイルを変更できます。
- onFocus - ボタンの onFocus イベントで実行する Javascript を指定します。このプロパティーを使用して、ボタンにフォーカスがあるときのボタンのスタイルを変更できます。
- onBlur - ボタンの onBlur イベントで実行する Javascript を指定します。このプロパティーを使用して、ボタンがフォーカスを失ったときのボタンのスタイルを変更できます。
- postURL - フォームの代替送信先 URL を指定します。この値は、JSP に指定されている URL に優先して適用されます。
- value - ユーザーがこのボタンをクリックしたときに送信されるパラメータの値を指定します。
例
<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[AD].passwordExpired'>
<Display class='Checkbox'>
<Property name='title 'value='Password is Expired'/>
</Display>
</Field>
DatePicker
ユーザーが、カレンダが表示されるポップアップウィンドウを使用して日付を指定できるようにします。Identity Manager のフォームには、カレンダアイコンとしてフィールドが表示されます。ユーザーがアイコンをクリックすると、Identity Manager に別のポップアップウィンドウとしてカレンダが開きます。
このコンポーネントを使ってユーザーは日付値を入力できます。コンポーネントプロパティーの設定に応じて、ユーザーは選択メニュー、テキストフィールド、またはカレンダポップアップウィンドウを使用して日付値を入力できます。デフォルトでは、テキストフィールドとアイコンが表示され、アイコンをクリックするとカレンダポップアップが表示されます。
次のプロパティーがあります。
- displayFormatHint - そのテキストフィールドに入力する日付フォーマットのヒントを表示するかどうかを決定します。true に設定すると、対応する日付フォーマットのヒントが Identity Manager に表示されます。フォーマット文字列の値は、コンポーネントの format プロパティーによって決まります。次のようなときは、Identity Manager にヒントは表示されません。
- format - 日付を表示するための日付フォーマットを指定します。値には、y、M、または d の任意のフォーマット文字を使用する、Java 形式の日付フォーマット文字列を指定できます。また、ISO フォーマット (yyyy-MM-dd) を指定する値 iso、またはロケールを反映したフォーマット (ロケール用の Java デフォルト) を指定する値 local も指定できます。指定しない場合は、Identity Manager では「MM/dd/yyyy」フォーマットが使用されます。
- multiField - 日付要素ごとに、独立した入力フィールドを表示するかどうかを指定します。値を設定しなかった場合、または false に設定した場合は、Identity Manager では適切にフォーマットされた日付テキストを入力するための 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 つのプロパティーがあります。これは、ページに表示する文字列の指定に使用されます。
例
<Display class='Html'>
<Property name='html'>
<concat>
<s><![CDATA[<div class="DashAlrtMsgTxt">]]></s> <ref>loginWarning</ref>
<s><![CDATA[ <a href=']]></s>
<s>user/changePassword.jsp</s>
<s><![CDATA['>]]></s>
<message name='UI_USER_MAIN_CLICK_HERE_INTRO'/>
<s><![CDATA[</a>]]></s>
<message name='UI_USER_MAIN_CLICK_HERE_REMAINDER'/>
<s><![CDATA[</div>]]></s>
</concat>
</Property>
</Display>
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 フラグメントを指定します。
- baseURLOption - (省略可能) 生成される URL のプレフィックスを指定します。異なるベース URL が必要な場合は、この設定は baseURL RequestState 設定よりも優先されます。
例
<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
メニューと同様に、リンクの箇条書きリストを表示します。
ListEditor
編集できる文字列のリストを表示します。
プロパティー
次のプロパティーがあります。
- listTitle - (String) Identity Manager が ListEditor グラフィカル表示の横に表示するラベルを指定します。
- pickListTitle - (String) picklist コンポーネントに使用するラベルを指定します。
- valueMap - (Map) リスト内の値の表示ラベルのマップを指定します。
- allowDuplicates - (Boolean) 値に true を指定すると、Identity Manager が管理するリストで重複が許可されます。
- allowTextEntry - (Boolean) 値に true を指定すると、Identity Manager にテキスト入力ボックスと追加ボタンが表示されます。
- fixedWidth - (Boolean) 値に true を指定すると、固定幅として表示されるはずです (Multiselect コンポーネントと同じ動作)。
- ordered - (Boolean) 値に true を指定すると、値の順序が保持されます。
- sorted - (Boolean) 値に true を指定すると、選択リスト内の値がソートされます。値が multivalued であり ordered でない場合は、Identity Manager では値リストもソートします。
- pickValueMap - (List または Map) 選択リスト内の値の表示ラベルのマップを指定します。
- pickValues - (List) picklist コンポーネント内で選択できる値を指定します。NULL の場合は、picklist は表示されません。
- height - (Integer) 優先する高さを指定します。
- width - (Integer) 優先する幅を指定します。この項目が表示されるテーブルセルのプロパティーとしてコンテナで使用できます。
例
次の例では、ListEditor 表示クラスを使用するフィールドが表示されます (Tabbed User Form)。
<Field name='accounts[Sim1].Group'>
<Display class='ListEditor' action='true'>
<Property name='listTitle' value='stuff'/>
<Property name='allowTextEntry'>
<Boolean>true</Boolean>
</Property>
<Property name='ordered'>
<Boolean>true</Boolean>
</Property>
</Display>
<Expansion>
<ref>accounts[Sim1].Group</ref>
</Expansion>
</Field>
このコードスニペットでは、顧客がユーザーにグループを追加したりユーザーからグループを削除したりできるフィールドが作成されます。
注
この表示クラスには通常、文字列のリストが入力として必要になります。1 つの文字列を文字列のリストにするときは、次のようにします。
<Expansion>
<appendAll><ref>accounts[Sim1].Group</ref></appendAll>
</Expansion>
NameValueTable
このコンポーネントは、名前と値のペアを 2 列の簡易テーブルに表示するときに使用されます。このコンポーネントは、含まれるデータを直接表示します。
データはいくつかの形式で指定できます。
プロパティーには、true に設定した場合に値を含まない行を非表示にする _hideEmptyRows があります。
MultiSelect
複数の選択項目を持つテキストボックスを表示します。これは、1 つのボックスに含まれる定義済みの値セットを選択ボックスに移動できる、2 つの部分から構成されるオブジェクトです。左のボックスの値は allowedValues プロパティーで指定します。多くの場合、この値は FormUtil.getResources などの Java メソッドを呼び出すことで動的に取得されます。複数選択ボックスの右側部分に表示される値には、フィールド名によって特定される関連ビュー属性の現在値が適用されます。
この 2 部構成のオブジェクトのフォームタイトルは、availabletitle プロパティーと selectedtitle プロパティーによって設定されます。
MultiSelect コンポーネントがアプレットを使用しないように設定するときは、noApplet プロパティーを true に設定します。
関連する説明については、「MultiSelect コンポーネントを使用しない方法」を参照してください。
注
Safari ブラウザが稼動するシステムで Identity Manager を実行する場合は、MultiSelect コンポーネントを使用するすべてのフォームで、noApplet オプションの設定をカスタマイズしてください。このオプションを次のように設定します。
<Display class='MultiSelect'>
<Property name='noApplet' value='true'/>
...
この表示コンポーネントには、次のプロパティーがあります。
- allowedValues - 複数選択ボックスの左側に関連付ける値を指定します。この値は、必ず文字列のリストとして指定してください。注: このボックスへの値の取り込みには <Constraints> 要素を使用できますが、この方法はお勧めしません。
- availableTitle - 表示されるボックスのタイトルを指定します。
- class - コンポーネントをアプレットとして表示しないときに、MultiSelect ボタンのスタイルを設定するために使用する CSS クラスを指定します。デフォルトは formbutton です。
- disabledclass - コンポーネントをアプレットとして表示しないときに、無効になっている MultiSelect ボタンのスタイルを設定するために使用する CSS クラスを指定します。デフォルトは formbutton です。
- displayCase - 各 allowedValues を大文字または小文字の値にマップします。upper または lower の値を取ります。
- height - 選択しているボックスの高さを、ピクセル単位で指定します。デフォルト値は、400 です。
- noApplet - MultiSelect コンポーネントがアプレットとともに実装されるか、標準 HTML 選択ボックスのペアとともに実装されるかを指定します。デフォルトでは、アプレットを使用するように設定されます。これは、値の長いリストを処理する場合に効果的です。Safari ブラウザが稼動するシステムでのこのオプションの使用については、前述の注記を参照してください。
- onBlur - 複数選択ボタンの onBlur イベントで実行する Javascript。このプロパティーを使用して、ボタンがフォーカスを失ったときのボタンのスタイルを変更できます。
- onFocus - MultiSelect ボタンの onFocus イベントで実行する Javascript を指定します。これを使用して、ボタンにフォーカスがあるときのボタンのスタイルを変更できます。
- onMouseOver - MultiSelect ボタンの onMouseOver イベントで実行する Javascript を指定します。このプロパティーを使用して、ボタンの上にマウスがあるときのボタンのスタイルを変更できます。
- onMouseOut - MultiSelect ボタンの onMouseOut イベントで実行する Javascript を指定します。このプロパティーを使用して、ボタンからマウスが離れたときのボタンのスタイルを変更できます。
- ordered - テキストボックスの項目リスト内で、選択している項目を上下に移動できることを定義します。値を true に設定すると、選択している項目を上下に移動させるための追加ボタンが表示されます。
- selectedTitle - 選択されたボックスのタイトルを指定します。
- sorted - 両方のボックスの値をアルファベット順にソートすることを指定します。
- typeSelectThreshold - noApplet プロパティーが true に設定されている場合にのみ適用されます。このコンポーネントは、allowedValue リストの下に先行入力選択ボックスを表示するかどうかを制御します。左の選択ボックスのエントリの数が、このプロパティーによって定義されるしきい値に達すると、選択ボックスの下に追加のテキスト入力フィールドが表示されます。テキストフィールドに文字を入力するときに選択ボックスがスクロールされ、入力した文字と一致するエントリが存在する場合に、それが表示されます。たとえば、w と入力すると、名前が w から始まる最初のエントリまで、選択ボックスがスクロールされます。
- width - 選択しているボックスの幅を、ピクセル単位で指定します。デフォルト値は、150 です。
例
<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
通常のテキスト入力ボックスを表示します。
この表示コンポーネントでよく使用されるプロパティーは次のとおりです。
- autocomplete ユーザーのクレデンシャルをコンピュータに保存するべきかどうかを指定します。デフォルトでは、このプロパティーは off に設定されているので、この情報が保存されることはありません。
- 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>
定義されている表示行を超えてテキストを入力すると、テキスト領域にスクロールバーが追加表示されます。
MultiSelect コンポーネントを使用しない方法
MultiSelect コンポーネント (アプレット版または HTML 版) を使用して多くの管理者ロールを表示すると、使いにくくなることがあります。Identity Manager には、管理者ロールをより効率的に表示して管理できるように、objectSelector フィールドテンプレートが用意されています。
Scalable Selection Library (sample/formlib.xml 内) には、objectSelector フィールドテンプレートを使用してユーザーが選択できる管理者ロール名を検索するサンプルが入っています。
コード例 6-2 objectSelector フィールドテンプレートのサンプル
<Field name='scalableWaveset.adminRoles'>
<FieldRef name='objectSelector'>
<Property name='selectorTitle' value='_FM_ADMIN_ROLES'/>
<Property name='selectorFieldName' value='waveset.adminRoles'/>
<Property name='selectorObjectType' value='AdminRole'/>
<Property name='selectorMultiValued' value='true'/>
<Property name='selectorAllowManualEntry' value='true'/>
<Property name='selectorFixedConditions'>
<appendAll>
<new class='com.waveset.object.AttributeCondition'>
<s>hidden</s>
<s>notEquals</s>
<s>true</s>
</new>
<map>
<s>onlyAssignedToCurrentSubject</s>
<Boolean>true</Boolean>
</map>
</appendAll>
</Property>
<Property name='selectorFixedInclusions'>
<appendAll>
<ref>waveset.original.adminRoles</ref>
</appendAll>
</Property>
</FieldRef>
</Field>
objectSelector サンプルコードを使用する方法
- Identity Manager IDE から Administrator Library UserForm オブジェクトを開きます。
- このフォームに次のコードを追加します。
<Include>
<ObjectRef type='UserForm' name='Scalable Selection Library'/>
</Include>
- AdministratorFields フィールド内で accounts[Lighthouse].adminRoles フィールドを選択します。
- accounts[Lighthouse].adminRoles 全体を次の参照で置き換えます。
<FieldRef name='scalableWaveset.adminRoles'/>
- オブジェクトを保存します。
次回以降にユーザーを編集して「セキュリティー」タブを表示すると、Identity Manager にカスタマイズされたフォームが表示されます。「...」をクリックすると Selector コンポーネントが開き、検索フィールドが表示されます。このフィールドを使用してあるテキスト文字列で始まる管理者ロールを検索すると、フィールドの値に 1 つ以上の値が設定されます。
フォームを復元するときは、「設定」>「交換ファイルのインポート」から $WSHOME/sample/formlib.xml をインポートします。
多数のオブジェクトを使用する環境でリソースとロールを管理するために objectSelector テンプレートを使用するその他のサンプルについては、sample/formlib.xml 内の Scalable Selection Library を参照してください。