Sun Java ロゴ     前へ      目次      索引      次へ     

Sun ロゴ
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 では、一般的な用途のために、いくつかのパラメータ名が予約されています。これらの名前をコンポーネント名に使用しないでください。

表 6-1 非表示パラメータ

予約されている名前

説明

id

編集するオブジェクトの ID が格納されます

command

フォームの送信に使用されるボタンの値が格納されます

activeControl

フォームで最後にアクティブであったコンポーネントの名前を格納します

message

ページの上部に表示される情報メッセージを格納できます

error

ページの上部に表示されるエラーメッセージを格納できます


コンポーネントクラス

HTML コンポーネントは、さまざまな方法で組み合わせることができる独立オブジェクトです。関連するコンポーネントはクラスにまとめられます。コンポーネントクラスには、次の 2 つの主要グループがあります。

基本コンポーネントクラス

共通コンポーネントクラスには、1 つの値を表示、編集するためのコンポーネントが含まれます。これらのコンポーネントについては、「基本コンポーネント」の節を参照してください。

コンテナクラス

コンテナクラスは、特定の方法で視覚的に構成されたコンポーネントの集合を定義します。コンテナクラスを作成すると、通常は HTML の table タグが生成されます。単純なコンポーネントは、コンポーネントを縦または横に並べることができます。より複雑なコンテナは、より複雑にコンポーネントを配置でき、コンポーネントの周囲に装飾を加えることができる場合もあります。

コンテナ自体がコンポーネントであるため、どのコンテナも別のコンテナに含めることができます。このメカニズムを利用することで、複雑なページレイアウトを作成できます。たとえば、多くのページはタイトルを持ち、その後に編集フィールドのリスト、さらにフォーム送信ボタンの行を持ちます。このようなレイアウトを作成するには、垂直整列を使用して Panel コンポーネントを作成し、LabelEditForm、および ButtonRow コンポーネントを含めます。EditForm コンポーネント自体にも、多数のサブコンポーネントが含まれます。ButtonRow は、垂直整列を使用する Panel コンポーネントで、Button コンポーネントのリストがここに含まれます。

BorderedPanel

項目を配置するための 5 つの領域 (東西南北と中央) を定義します。北と南の領域に配置されたコンポーネントは、水平に並べられます。それ以外の領域に配置されたコンポーネントは、垂直に並べられます。

次のプロパティーがあります。

ButtonRow

ボタン配置用のデフォルトオプションを設定します。Panel コンポーネントを拡張します。

EditForm

この表示コンポーネントは、フォームをブラウザに表示するときのデフォルトの表示クラスです。

フォームコンポーネントは 2 つの列に配置され、左がタイトル、右がコンポーネントとなります。タイトルには吹き出しヘルプを含めることができます。複数のコンポーネントを 1 つの行に連結できます。

よく編集されるプロパティーは、titlesubTitle、および 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 には、これ以外に次のプロパティーがあります。

Menu

MenuMenuBar、および 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 は、検索結果の内容を表示するためのプロパティーを実装します。

次のプロパティーがあります。

次のプロパティーは、複数値のコンポーネントでのみ有効です。

次のプロパティーは、単一値のコンポーネントでのみ有効です。

SimpleTable

コンポーネントをグリッドに配置します。オプションとして、上部に列のタイトル行も設定できます。

次のプロパティーがあります。

TabPanel

次に示されるタブの行を表示する、タブ付きパネルの表示に使用されます。デフォルトでは、タブは水平に並べられます。

次のプロパティーがあります。

Row

水平配置に対応したパネルの作成に使用されます。

SortingTable

列の見出しを指定して内容をソートできるテーブルの作成に使用されます。このテーブルの内容は、子コンポーネントによって定義されます。列ごとに 1 つの子コンポーネントを作成してください (columns プロパティーで定義)。通常は、列は FieldLoop に格納されます。

テーブルセルの表示時に、このコンポーネントには、子コンポーネントの alignvalign、および width プロパティーが適用されます。

次のプロパティーがあります。

たとえば、SortingTable コンポーネントが編集可能な項目を含むクエリー結果を表示する場合、ユーザーが結果テーブルの項目を編集したあとに、編集後の項目を含む結果ページが Identity Manager で必ず表示されるようにするには、0 より大きな値を指定します。

WizardPanel

いくつかの子コンポーネントの 1 つ (通常は EditForms) の表示に使用されます。コンポーネント間の移動には、ウィザード形式の「次へ」および「戻る」ボタンが使用されます。

次のプロパティーがあります。


コンポーネントサブクラス

すべてのコンポーネントは、ほとんどのコンポーネントに共通するプロパティーを定義した 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 プロパティーを定義します。このプロパティーは、SelectMultiSelect のように、値を編集できるサブクラスにのみ関連します。一方で、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 オブジェクトです。コンポーネントのデータ型の詳細については、「データ型」の節を参照してください。

ほとんどのコンテナクラスは値を持ちません。割り当てた値は無視されます。ただし、一部のコンテナには値を設定できます (たとえば、TabPanelWizardPanel)。

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 は常に引用符 (一重) で属性値を囲みます。属性値内で引用符を使用するときは、それを &#039; に置き換えます。このエスケープを使用しない場合は、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 タグに含まれます。一部のコンテナは、nowrapalignwidth、および 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 を実行するように定義することもできます。

この表示コンポーネントには、次のプロパティーがあります。

<Display class='Button'>

   <Property name='label' value='Change Password'/>

   <Property name='value' value='Recalculate'/>

</Display>

Checkbox

チェックボックスを表示します。チェックボックスを選択すると、そのボックスの値は true となります。選択されていないボックスの値は false となります。

この表示コンポーネントには、次のプロパティーがあります。

<Field name='accounts[AD].passwordExpired'>

   <Display class='Checkbox'>

      <Property name='title 'value='Password is Expired'/>

   </Display>

</Field>

DatePicker

ユーザーが、カレンダが表示されるポップアップウィンドウを使用して日付を指定できるようにします。Identity Manager のフォームには、カレンダアイコンとしてフィールドが表示されます。ユーザーがアイコンをクリックすると、Identity Manager に別のポップアップウィンドウとしてカレンダが開きます。

このコンポーネントを使ってユーザーは日付値を入力できます。コンポーネントプロパティーの設定に応じて、ユーザーは選択メニュー、テキストフィールド、またはカレンダポップアップウィンドウを使用して日付値を入力できます。デフォルトでは、テキストフィールドとアイコンが表示され、アイコンをクリックするとカレンダポップアップが表示されます。

次のプロパティーがあります。

<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[&nbsp;<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 を含めることができます。次のプロパティーがあります。

InlineAlert

エラー、警告、成功、または情報のアラートボックスを表示します。このコンポーネントは、通常はページの上部に配置されます。タイプが InlineAlert$AlertItem の子コンポーネントを定義することで、1 つのアラートボックスに複数のアラートを表示できます。

この表示コンポーネントには、次のプロパティーがあります。

単一のアラートメッセージの例

<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

テキストの文字列を表示します。

この表示コンポーネントには、次のプロパティーがあります。

Link

ページにリンクを配置します。

次のプロパティーがあります。

<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

編集できる文字列のリストを表示します。

プロパティー

次のプロパティーがあります。

次の例では、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'/>

 ...


この表示コンポーネントには、次のプロパティーがあります。

<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 の場合、または許可される値のいずれとも一致しない場合は、ボタンは選択されません。

この表示コンポーネントには、次のプロパティーがあります。

<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 プロパティーで指定します。

この表示コンポーネントには、次のプロパティーがあります。

このコンポーネントは、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

通常のテキスト入力ボックスを表示します。

この表示コンポーネントでよく使用されるプロパティーは次のとおりです。

<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

複数行のテキスト入力ボックスを表示します。

この表示コンポーネントには、次のプロパティーがあります。

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 サンプルコードを使用する方法
  1. Identity Manager IDE から Administrator Library UserForm オブジェクトを開きます。
  2. このフォームに次のコードを追加します。
  3. <Include>

       <ObjectRef type='UserForm' name='Scalable Selection Library'/>

    </Include>

  4. AdministratorFields フィールド内で accounts[Lighthouse].adminRoles フィールドを選択します。
  5. accounts[Lighthouse].adminRoles 全体を次の参照で置き換えます。
  6. <FieldRef name='scalableWaveset.adminRoles'/>

  7. オブジェクトを保存します。

次回以降にユーザーを編集して「セキュリティー」タブを表示すると、Identity Manager にカスタマイズされたフォームが表示されます。「...」をクリックすると Selector コンポーネントが開き、検索フィールドが表示されます。このフィールドを使用してあるテキスト文字列で始まる管理者ロールを検索すると、フィールドの値に 1 つ以上の値が設定されます。

フォームを復元するときは、「設定」>「交換ファイルのインポート」から $WSHOME/sample/formlib.xml をインポートします。

多数のオブジェクトを使用する環境でリソースとロールを管理するために objectSelector テンプレートを使用するその他のサンプルについては、sample/formlib.xml 内の Scalable Selection Library を参照してください。



前へ      目次      索引      次へ     


Part No: 820-5454.   Copyright 2008 Sun Microsystems, Inc. All rights reserved.