第6章
この章では、Novell exteNd Directorフォームデザイナを紹介し、XForms 1.0準拠のWebフォームを作成する方法を説明します。トピックは次のとおりです。
XFormsでは、Webフォームを定義するための、強力で標準ベースの方法が用意されています。 XForms標準の特長として、次の点が挙げられます。
XFormsは、スタンドアロンアプリケーションとしては稼動できません。 XHTMLのようなホスト言語内部でコンポーネントとして稼動するように設計されています。 Novellの実装では、ページフローアプリケーションのコンテキスト内部で稼動します。
フォームデザイナには、XForms 1.0準拠のWebフォームに対応したグラフィカルな開発環境が装備されています。
フォームデザイナは、3つのタブで構成されています。
タブ |
説明 |
---|---|
フォーム |
フォームのユーザインタフェースの定義に使用します。 次の処理をグラフィカルに実行できます。
|
モデル |
フォームのモデル要素の定義に使用します。次の操作を実行できます。
|
ソース |
|
XFormsプレビュー |
フォームをテストモードで実行できます。
|
フォームデザイナを起動する
既存のフォームを開きます(次の既存のフォームを開くを参照)。
フォームを新規に作成します(フォームの作成を参照)。
フォームウィザードを使用して、初期のバインドされていないフォーム、または次のものをベースにしたデータにバインドされたフォームを作成します。
その他の方法 入出力フォームを内蔵した完全なページフローを他のソースから作成するには、別のウィザードを起動します。 ページフローアプリケーションの範囲内でXFormsを生成する、別ウィザードの起動の詳細については、、 、およびを参照してください。
ヒント: リソースセットがあるプロジェクトを開いていないと、フォームウィザードを 起動できません。
[ポートレット]タブで、[フォーム]を選択し、[OK]をクリックします (または、[フォーム]をダブルクリックします)。
オプション |
操作内容 |
---|---|
フォーム名 |
フォームの名前を指定します。 拡張子は指定する必要はありません。 |
CSSレイアウトの使用 |
ウィザードでコントロールをフォームにレイアウトするために絶対配置方式を利用する場合は、このチェックボックスをオンにします。それ以外ではオフにします。 CSSレイアウトを使用しない場合、絶対配置方式は利用できません。
|
標準ポートレットCSSクラス |
ウィザードでフォントと色に対してWSRP CSSクラスを使用する場合は、このチェックボックスをオンにします (デフォルト設定は、Common\Resources\CSSClassificationsディレクトリにあるwsrp-classifications.xmlファイルで定義されています)。 オンの場合、これらのクラスは、ランタイム時にページのスタイル設定のポータルテーマファイルと連携して使用されます。 独自にフォントと色を定義する場合は、オフにします。 |
初期インスタンスデータに、 次のファイルタイプのいずれかを指定します。
結果 [完了]をクリックすると、次の処理に必要なマークアップすべてを含むXHTMLファイルが生成されます。
生成されたフォームは、XForms 1.0準拠です。 フォームは、XHTMLファイルに格納されます。 ウィザードによって生成されたフォームには、それぞれ次のものがあります。
XMLネームスペース宣言は、ファイルの先頭に配置され、次のフォーマットになっています。
xmlns:xforms="http://www.w3.org/2002/xforms"
XMLネームスペースは、要素が属するXML言語、さらにはXML言語の処理方法も特定します。 プレフィックスの具体例は、次のとおりです。
XMLNSプレフィックス |
説明 |
---|---|
xforms |
XFormsの言語要素として処理 |
ev |
XMLイベントの言語要素として処理 |
手順 ウィザードにより追加されたネームスペースを変更する必要はありません。 アプリケーション次第では、新たにネームスペース宣言を追加する必要があります。
XFormsのモデル要素は、XHTMLドキュメントの<head>内に配置されます。 モデル要素により、次の項目が定義されます。
ウィザードで生成されたモデル要素には、たとえば次のように「_wsrp_rewrite_」を含む名前付きのid属性があります。
<xforms:model id="model1_wsrp_rewrite_">
モデルが1つしかない場合はモデルIDは必須ではありませんが、フォームウィザードにより常に生成されます。ウィザード生成のモデルIDには、常にwsrp_rewriteトークンが含まれます。 wsrp_rewriteトークンは、ランタイム時に固有な名前で置換されます。 そのため、ランタイム環境は、単一のページ内で稼動している複数のフォームとモデルを管理できます。
手順 [モデル]タブを使用してインスタンスデータ、送信要素、およびモデル項目のプロパティを定義できます。 wsrp_rewriteトークンの置換は、ランタイム環境により管理されます。
モデル要素内に、事前定義されたXFormsの<action>要素が2つあります。これには、XFormsのイベントハンドラが2つ含まれています。 この2つのイベントハンドラは、送信エラーとデータ検証エラーのためのデフォルトのハンドラです。
送信時にエラーが起きると、ユーザにフィードバックを送信します。 このイベントハンドラの目的は、フォームに何か失敗があった場合、なんらかの症状を起こさせることです。 次のように表示されます。
<xforms:action ev:event="xforms-invalid" ev:observer="div_wsrp_rewrite_"> <xforms:message level="modal">The data is invalid. Please check it and try again.</xforms:message> </xforms:action> <xforms:action ev:event="xforms-submit-error"> <xforms:message level="modal">Submission error. Please check the data and try again.</xforms:message> </xforms:action>
手順 必須のアクションはありませんが、フォームにこの機能が不要と判断される場合は、イベントハンドラを変更するか削除できます。
<style>要素には、フォームとコントロールのCSS定義が含まれています。
フォーム生成時にCSSレイアウトを使用する場合、生成されたページのスタイル設定情報は、CSSスタイル設定ルールに含まれます。このルールは、XHTMLファイルの<head>内にある<style>要素にあります。 CSSスタイルルールは、XHTMLファイルからリンクを通じて参照される外部ファイルに格納することもできます。
注記: ウィザードでのフォーム生成時に、CSSスタイル設定を使用しないように指定した場合、生成されたフォームには、スタイルノードが含まれません。
次の条件が、フォームのXFormsコントロールすべてに適用されます。
手順 デフォルトのCSSスタイル設定ルールを変更するには、次の手順を実行します。
詳細については、CSSスタイルマネージャの使用を参照してください。
ユーザインタフェースを定義するには、[フォーム]タブにあるツールを使用します。 この節では、[フォーム]タブの使用方法について説明し、次のトピックについて取り扱います。
[フォーム]タブを使用すると、ユーザインタフェースを構成している、フォームコントロールをグラフィカルに作成し、操作できます。 [フォーム]タブは次のようになっています。
[フォーム]タブには、次の機能があります。
ツール |
説明 |
---|---|
視覚エディタ |
フォームコントロールをグラフィカルに作成して操作するには、視覚エディタを使用します。 このエディタには、次に示すタブ付きツールバーがあります。 |
インスタンスデータペイン |
インスタンスノードをフォームコントロールにバインドするには、インスタンスデータペインを使用します。 [フォーム]タブのインスタンスデータペインを使用してインスタンスデータの構造を変更することはできません。 構造の変更には、[モデル]タブのインスタンスデータペインを使用します。 |
プロパティインスペクタ |
現在選択しているコントロールでCSSとデータのバインディングプロパティを操作するには、プロパティインスペクタを使用します。
|
イベントエディタ |
フォームコントロールに対してイベントとアクションを定義するには、イベントエディタを使用します。
モデルのイベントとアクションを定義するには、[モデル]タブを使用します。
|
編集できるのは、ページのレイアウト領域にあるフォームコントロールだけです。 視覚エディタを使用してページのXHTMLを編集することはできません。 XHTMLタグが展開されてその内容が表示されることはありません。表示されるのは、タグ自体だけです。 フォームコントロールをXHTMLタグに挿入することはできません。
視覚エディタでは、次のショートカットキーを使用できます。
フォームデザイナでは、XForms 1.0仕様で概要が策定されているXFormsコントロールのすべて、およびフォームデザイナがフォーマット設定の制御に使用している他のコントロールの一部をサポートしています。 コントロールには、次のものがあります。
アイコン |
コントロール |
説明 |
---|---|---|
|
XFormsトリガコントロール |
標準のXFormsトリガコントロールです。 たとえば、フォームのボタンが該当します。 ユーザがトリガするアクションが許可されます。 |
|
リンクスタイルのXFormsトリガ |
リンクをエミュレートするよう事前設定された、標準のXFormsトリガコントロールです。 トリガが、ボタンではなくリンクに見えるようにするため、CSSルールが適用されます。 その結果は、次のとおりです。
|
|
XForms出力 |
読み込み専用データをユーザに表示します。 このコントロールでは、一部のデータタイプのフォーマットを指定できるフォーマットプロパティをサポートしています。 フォーマット設定は、プロパティインスペクタで適用します。 |
|
XFormsテキスト領域 |
自由形式の複数行コンテンツを入力できます。 |
|
XFormsアップロードコントロール |
ファイルをローカルのファイルシステムからアップロードできます。 |
|
XForms入力 |
単一行の自由形式データを入力できます。 このコントロールでは、一部のデータタイプのフォーマットを指定できるフォーマットプロパティがサポートされます。 フォーマット設定は、プロパティインスペクタで適用します。
|
|
XForms範囲 |
値の連続した範囲から選択できます。 |
|
XFormsシークレット |
単一行の自由形式データを入力できます。 データを入力すると、文字は別の文字に変更されます。 この機能は、パスワードなどの場合に役立ちます。 |
|
XFormsの単一選択 |
選択肢のセットから項目を1つ選択できます。 |
|
XFormsの複数選択 |
選択肢のセットから項目を2つ以上選択できます。 |
|
XForms送信ボタン |
フォームの内容を送信できる、特殊形式のトリガです。 |
|
XHTMLイメージ |
プロジェクトのリソースセットからロードしたXHTMLイメージを表示します。 [フォーム]タブモード、およびブラウザでの表示形式モードで表示可能です。 |
|
HTMLコンテンツボックス |
スタティックHTMLコンテンツの読み込み専用表示です。 |
|
絶対配置領域 |
exteNd Directorの拡張機能です。 レイアウト管理に使用します。 |
|
XFormsの繰り返し |
同様なデータの集まりを表示する場合に使用します。 繰り返される要素を管理するには、繰り返しブロックをフォームに追加してから、繰り返されるデータの単一インスタンスを表すコントロールを、繰り返しブロック内に追加します。 ランタイム時に、プロセッサは繰り返しコントロールがバインドされている各データ要素ごとに、繰り返しブロックを1回表示します。 繰り返されるデータの各インスタンスは、ブロックとして処理されます。 各ブロックは、先に処理されたブロックの後に配置されます。 繰り返されない、残りのコンテンツはすべて、その下に配置されます。 繰り返されないオブジェクトは、次に述べる場所に直接配置することはできません。 |
|
Xformsスイッチ |
フォームコントロールを条件に応じて処理する場合に使用します。 スイッチ要素を使用すると、任意の数のケース要素をチャイルド要素にできます。 各ケースはサブフォームを表し、そのうちのいずれかがランタイムプロセッサにより、いつでも正確に表示されます。 どのcaseが表示されるのかは、計算結果ではなく、イベントハンドラのアクションによって決まります。 フォームデザイナは、スイッチ要素を各ケース要素のレイアウト領域として表示します。 スイッチブロック内でのケースステートメントの順序を指定することはできません。もっとも、これは不要です。一度に表示されるのは1件だけだからです。 イベントハンドラにより、ユーザが指定するイベントに応じたケースの表示方法が決まります。 |
|
ページフローリンク領域 |
exteNd Directorの拡張機能です。 このコントロールは、ランタイム時に[送信]ボタンに置換されます。
|
コントロールに対して指定できるプロパティの詳細については、フォームコントロールのプロパティの設定を参照してください。
フォームウィザードを使用して初期フォームを生成した後は、フォームのレイアウトとコントロールの表示具合を微調整できます。 [フォーム]タブで次の処理ができます。
フォームにコントロールを追加する方法は、いくつかあります。 最初の2つの方法では、バインドされていないコントロールをフォームに追加します。
バインドされていないコントロールをXFormsツールバーから追加する
バインドされていないコントロールを、[フォームデザイナ]メニューから追加する
コントロールを削除すると、そのラベルも一緒に削除されます。
デフォルトでは、コントロールの幅と高さは、自動的にそのコンテンツにふさわしいサイズに調整されるため、事前には指定されていません。 正確に幅と高さを指定するには、次の2とおりの方法のいずれかを実行します。
注記: 幅と高さを指定すると、コントロールのコンテンツは、指定サイズに合わせるため折り返されます。 実行結果は保証されません。
プロパティインスペクタを使用して、フォームコントロールのサイズを決定する
レイアウト、繰り返し、またはスイッチブロック内のコントロールを整列できます。
コントロールをグループ化すると、次のことができます。
コントロールをグループ化するためのルールは、次のとおりです。
グループは、厳密にネストする必要があります。つまりグループ全体を、グループ、繰り返し、またはスイッチ/ケースブロックなどの上位レベルのコンテナに組み込む必要があります。
グループ使用時には注意してください。 フォームデザイナでコントロールのセットをグループ化しても、コントロールを場所的にまとめてロックすることにはなりません。 コントロールのセットをグループ解除してから再グループ化すると、情報(インスタンスデータのコンテキスト、グループ要素に添付されたスタイル情報など)が失われます。
これらのルールの大半は、XMLの階層構造的性質のために必要とされます。
[フォームデザイナ]メニューから[グループに追加]を選択するか、または右クリックして、ポップアップメニューから[グループに追加]を選択します。
新規グループが作成され、それが現在の選択になります。 プロパティインスペクタにより、この選択グループのプロパティが表示されます。 グループを選択すると、ページ内のどこにでもドラッグして、グループ内でコントロールを再配置できます。
グループを作成すると、次の結果が得られます。
新しいグループ要素を作成するようにXMLが再編成されます。この要素のペアレントは、最初に選択したコントロールのペアレントです。
グループノードをバインドしているノードセットは、インスタンスデータノードに設定されます。このノードは、選択されたコントロールにバインドされているインスタンスデータノードの、「最も近い」先祖になります。
選択されたコントロールに対して実行するコマンドが後から追加される場合が考えられるため、コントロールを1つ選択したからといって、そのグループ全体が選択された状態になることはありません。 コントロールのXML要素は、グループを表すグループ要素の下に移されます。そして、XPathをバインドしているインスタンスデータは、グループ要素にバインドされたノードに対して相対的になるように調整されます。
右クリックして、[グループから削除]を選択します(または、[フォームデザイナ]メニューから[グループから削除]を選択します)。
コントロールを表すXML要素が、グループ要素から分離され、同レベルのアイテムが作成されます。インスタンスデータのXPath式は、調整されて絶対式になります。 グループにコントロールがなくなると、グループ要素がドキュメントから削除されます。
グループを削除すると、次の結果が得られます。
フォームデザイナには、フォームの表示に使用される色、サイズ、およびフォントを適用するための、デフォルトのスタイルが用意されています。これは、標準ポートレットのCSSクラス定義をベースにしています。 スタイルのデフォルトクラス属性は、wsrp-classification.xml (\Common\Resources\CSSClassificationsディレクトリにあります)で定義されています。 ランタイム時には、さまざまなポータルテ-マファイルにより、これらのクラス属性、およびいくつかの内部Novellクラス属性に関連付けられたスタイルが定義されます。
ウィザードにより、フォームの各コントロールに対して、クラス属性が生成されます。 たとえば、フォームの入力フィールドには、次のような名前が与えられます。
class=\x94 nvP1_wsrp_rewrite_ portlet-form-input-field\x94
wsrp_rewriteは、マルチポートレットページのページ上で、コントロールすべてに対して名前が固有になるようにランタイム時に置換されるトークンです。
portlet-form-input-fieldは、外部スタイルシート(通常はポータルテーマファイル)の書式設定ルールを参照するクラス名です。
これらのクラスは、Common\Resources\CSSClassificationsディレクトリにあるWSRP-classification.xmlで定義されています。 このファイルは、クラス名を特定のコントロールタイプにマッピングします。 これらのクラス名は、ウィザードの最初のページで[標準ポートレットCSSクラス]チェックボックスをオンにすると、ウィザードにより追加されます。
CSS分類を、これらの値を持たずに生成されたファイルに
適用する
CSSスタイルマネージャを使用して、フォームに関連付けられた、内部または外部のCSSスタイルシートをフォームデザイナ内部から編集できます。 CSSスタイルマネージャを使用すると、特定のコントロールとラベルに関連付けられた、背景色、テキスト、およびフォントサイズなどのプロパティを指定できます (フォームデザイナは、コントロールとラベルの配置を直接処理しています。CSSスタイルマネージャではこの機能を実行できません)。
注記: スタイルシートを添付すると、このメインダイアログボックスで[キャンセル]を押しても、完了したアクションはキャンセルできません。
内部と外部のスタイルシートのスタイルルールを作成、編集、および削除するには、CSSエディタを使用します。
詳細については、『ユーティリティツール』のCSSエディタに関する章を参照してください。
フォームコントロールのレイアウトをさらに正確に制御するために、フォームデザイナでは、フォームコントロールをレイアウト領域内部に配置する必要があります。 レイアウト領域は、XHTMLページ内でのXFormsコントロールのコンテナになります。 他のフォームコントロールと同様に、レイアウト領域を追加、削除、サイズ設定、およびプロパティ設定できます。 次のコントロールが、レイアウト領域として機能します。
レイアウト領域は、視覚エディタの左端にあるガターで区別できます。
レイアウト領域のプロパティ設定、サイズ変更、または削除のためにコントロールを選択するには、ガターをクリックします。
[XForms]ツールバーの[XFormsの繰り返しを挿入する]アイコンをクリックします。
視覚エディタ内の繰り返しブロックの空白部分をクリックします(ブロックの境界から離れた場所をクリックしてください。下側の境界上またはそのすぐ近くをクリックすると、既存のブロックの内部ではなく、直後に新たにブロックが追加されてしまいます)。
コントロールの追加と削除で説明されている方法で、ケースレイアウト領域にコントロールを追加します。
ヒント: ケースの追加と削除は、スイッチボックスを選択し、右クリックして表示されるポッ プアップメニューから、追加または削除のアクションを選択して行います。
プロパティは、特定のコントロールに対して設計時に設定できる属性です。 プロパティ値は、プロパティインスペクタで指定します。 exteNd Directorの拡張機能(ページフローリンク領域)または便利機能(警告のリテラルテキストなど)に固有のプロパティについては、次の表を参照してください。 その他すべての定義値については、XForms の仕様を参照してください。
プロパティ名 |
説明 |
適用対象 |
---|---|---|
警告のリテラルテキスト |
警告ボックスに表示されるテキストです。
|
モデル項目のプロパティを定義できるすべてのコントロール |
ボタンの高さ |
ランタイム時にページフローリンク領域に追加されるボタンの高さを指定します。 デフォルトは25です。 |
|
ボタンのレイアウト |
ランタイム時にページフローリンク領域に追加されるボタンのレイアウトを指定します。 デフォルトは水平です。 |
|
ボタンの間隔 |
ランタイム時にページフローリンク領域に追加されるボタンの間隔を指定します。 デフォルトは5ピクセルです。 |
|
ボタンの幅 |
ランタイム時にページフローリンク領域に追加されるボタンの幅を指定します。 |
|
ダイナミックな選択肢 |
|
|
次の処理ができるダイアログボックスを起動します。 |
CSSスタイル設定が適用されるすべてのコントロール |
|
リンクのエミュレート |
トリガコントロールの外観を定義します。 オン―トリガがリンクとしてスタイル設定されます。 DOMActivateイベント(ボタンプレス)がないかリッスンする<xforms:action>イベントハンドラを追加します。 アクション要素に、HTTP GET処理を介して新しいページをロードする<xforms:load>要素が盛り込まれます(こうして、要求タイプがGETに設定されます)。 GETに使用するデフォルトのURLはありません。ターゲットURLを介してユーザが追加する必要があります。 オフ―トリガがボタンとしてスタイル設定されます。 |
|
フィールドタイプ |
インスタンス項目に対して、コントロールがバインドされていると想定するデータタイプを設定します。 これは、フォーマットプロパティと組み合わせて使用してください。 フィールドのデータタイプに有効なフィールドタイプを指定していることを確認してください。 これら2つのタイプに競合が起きている場合は、次のような状況が発生します。 書式も参照してください。 |
データにバインドできるすべてのコントロール |
書式 |
データ表示の際の書式を指定します。 有効な書式は、次のとおりです。 数値、通貨、パーセント、###,###.##、#####0.##、#####.00 フィールド タイプも参照してください。 |
データにバインドできるすべてのコントロール |
ヒントのリテラルテキスト |
ツールチップに表示されるテキスト |
表示されるすべてのコントロール |
ID |
コントロールの固有な識別子。 |
すべてのコントロール |
ラベル |
コントロールのラベルとして表示されるテキスト。 |
ラベルがあるすべてのコントロール |
モデルID |
フォームコントロールに関連付けられたモデルのID。 |
データをバインドできるすべてのコントロール |
要求タイプ |
Get・lt;xforms:load>アクションを使用します。 ターゲットURLプロパティが必要です。 Post・lt;xforms:send>アクションを使用します。 送信プロパティが必要です。 |
|
ソース |
挿入するXHTMLイメージがあるソースファイルの名前を指定します。 |
|
リンクスタイル |
オン―XFormsトリガコントロールが、HTMLリンクとしてスタイル設定されます。 CSSクラスセレクタ(nv-link-style)をトリガのクラス属性に追加します。 このCSSセレクタにより、トリガがHTML <a> tagのデフォルトの外観に見えるようにスタイル設定されます。 このセレクタルールは、ページの<style>ノードに追加されるので、外観を自由に変更できます。 リンクをエミュレートするようマーク付けされたトリガはすべて、この同じスタイルを共有します。 オフ―トリガのクラス属性からセレクタ名を削除します。ただし、<style>ノードからセレクタルールを削除することはありません。 |
|
送信 |
<xforms:send>の送信属性の値を指定します (これは、<xforms:model>の<xforms:submission>のIDです)。 |
|
ターゲットURL |
<xforms:load>のリソース属性の値を指定します (新しいページをロードするためにGETが送信される、宛先のURL)。 このURLは、ポートレットコンテキストでURLを書き換えるために自動的にマークアップされます。そのため、ここで相対URLを指定すると、自分のポートレットに戻ります。 |
フォームデザイナでは、コントロールを簡単に単一のノードまたはノードセットにバインドできます。 ほとんどの場合、ユーザが何も操作しなくても、コントロールをデータにバインドできます。たとえば、次のとおりです。
生成されたバインドを変更する場合、またはフォームに追加したコントロールをツールバーからバインドする場合は、プロパティインスペクタを使用して、バインド属性を指定できます。 [モデル]タブで<bind>をセットアップし、次にバインドプロパティを<bind>要素のIDに設定することもできます。コントロールへの要素のバインドを参照してください。
注記: バインドは、コントロールの<ref>属性を介して次の手順で生成されます。 <ref>または<bind>のいずれかを指定できます。 一方を指定すると、他方は自動的に削除されます。 [ソース]タブから両方を入力した場合は、<bind>が優先されます。
XPathナビゲータを起動([XPath]テキストボックス隣の省略記号をクリック)
[XPathナビゲータ]ダイアログボックスで、バインド対象ノードを見つけて選択します。
XPathナビゲータの使用法の詳細については、『exteNd Directorアプリケーションの開発』のスコープパスおよびXPathに関する章を参照してください。
注記: <repeat>要素は、ノードセットにバインドする必要があります。
プロパティインスペクタを使用して、「モデルID」を指定します。
[XPathナビゲータ]ダイアログボックスで、バインド対象ノードを見つけて選択します。
XPathナビゲータの使用法の詳細については、『exteNd Directorアプリケーションの開発』のスコープパスおよびXPathに関する章を参照してください。
注記: <ref>が複数のノードになる場合は、最初のノードが使用されます。
Selectコントロールに値のリストを提供する方法は、2通りあります。
方法 |
可能な処理 |
使用する場合 |
---|---|---|
スタティック |
フォーム設計時にリスト値を指定します。 |
リストが比較的短い場合、値が既知の場合、または値が一定の場合に使用します。 |
ダイナミック |
Nodesetからリスト値を取得するよう指定します。 |
情報がXMLファイルにある場合に使用します。 リスト項目がどうなるか不明の場合、またはリストが頻繁に変わる場合にも使用します。 |
ユーザに表示されるのはラベルの方ですが、関連付けられた値は、インスタンスノードに書き込まれた値です。 そのため、ユーザが認識できるテキストを表示できる一方で、キーまたは他のタイプのコードをインスタンスノードに格納できます。 たとえば、「apples」、「oranges」、および「pears」という語を入力した場合、これらの語は表示リストに表示されます。 ところが、「apples」を選択して返される値は、「apples」ではなく「1」になります。「oranges」なら「2」です。
インスタンス要素 Selectコントロールは通常、2つのインスタンス要素に関連付けられます。
Nodeset XPathの隣にある省略記号をクリックして、XPathナビゲータにアクセスし、Nodesetを選択します。
値のXPathの隣にある省略記号をクリックして、XPathナビゲータにアクセスし、格納値を選択します。 この値は、インスタンスノードに書き込まれます。
XFormsのモデル要素により、フォームで利用できるXMLデータの構造が定義されます。 定義されるのは、次の項目です。
[モデル]タブには、次の要素があります。
[モデル]タブでは、フォームのモデルを構成する要素をグラフィカルに定義できます。 [モデル]タブは次のように表示されます。
[モデル]タブには、次の機能があります。
デフォルトでは、ウィザードにより生成されたフォームにはモデルが1つあります。
[モデル]タブでフォームを開いた状態で、[追加]をクリックします(モデルエディタの最上部にあります)。
次のダイアログボックスが表示されます。 wsrp_rewrite_がモデルID名に追加されています。 これは、推奨されているプレースホルダです。 wsrp_rewrite_は、ランタイム時に固有なIDに置換され、同じページ上の他のフォームまたはポートレットと名前が競合するのを回避できます。
プロパティインスペクタにアクセスし、次のように入力してプロパティを完成させます。
イベントの追加の詳細については、イベントハンドラのカスタマイズを参照してください。
注記: 要素タイプの中には、インスタンスのように、要素のルートへの追加しか認めないものもあります。 バインドなどの他の要素タイプでは、要素を他の要素内にネストすることを認めています。 ネストできる要素を見極めるには、要素(ルートではない)を選択して右クリックし、メニュー項目に[アイテムの追加]があるかどうかを調べます。
インスタンス要素のプロパティが、プロパティインスペクタに表示されます。 プロパティには、次のものがあります。
プロパティ |
説明 |
---|---|
ID |
インスタンスデータの固有な識別子。 これが必要になるのは、単一のドキュメントに複数のインスタンスデータノードがある場合だけです。 ランタイム時に、単一のページ上に複数のXFormsを持つ複数のポートレットが存在する可能性があるので、フォームデザイナで常に_wsrp_rewrite_を追加できるようにすることをお勧めします。 |
ランタイム時に使用するページフローデータ |
ランタイム時のインスタンスデータの処理方法を指定します(フォームがページフロー内に取り込まれた後)。 次のオプションがあります。
重要: フォームをページフローに取り込む(Xforms活動として)と、スコープパスのセットを指定できるようになります(この活動にプロパティインスペクタを使用します)。その際、置換できる<xforms:instance>ノードのそれぞれに対して、換わりのデータが提示されます (これらは、「ランタイム時に使用するページフローデータ」が[常時]、[使用可能な場合]、または[使用可能でない場合削除]に設定されているインスタンスノードです。 ) |
プライマリインスタンスデータですか? |
<xforms:instance>ノード用のデータを、「プライマリインスタンスデータ」として処理するかどうかを指定します。 プライマリインスタンスデータとは、ページ表示のXSLT変換に対する入力データのことです。ページのXSLT式で使用するデフォルトのコンテキストになります。 その他の入力データはすべて「セカンダリ入力データ」であり、XSLT式の変数参照を介さないとアクセスできません。
|
インライン |
データがフォームのモデル要素内に含まれている場合は、このチェックボックスをオンにします。 オンにすると、ウィザードにより生成されたインスタンスデータを使用したり、インスタンスデータをプロジェクトのリソースセット内にあるファイルからインポートできます。 詳しくは、後で述べるファイルからのインスタンスデータのインポートを参照してください。 データを外部ファイルから参照する場合は、チェックボックスをオフにします。 詳しくは、後で述べるソース(URI)を参照してください。 |
ファイルからのインスタンスデータのインポート |
インスタンスデータをインポートする |
ソース(URI) |
データがインラインではない場合、URIでデータの場所を指定できます。 注記: URIは、現在のプロジェクトのリソースセット内における場所を参照する必要があります。 リンクをインスタンスデータに追加する |
フォームのデータはランタイム時に、[ランタイム時に使用するページフローデータ]プロパティで指定された方法で置換されます。 データはフォーム(ポートレットとして稼動します)ごとに別々に置換されます。置換処理は、ポータルページへの集約前に行われます。 さらに、入力ドキュメントに対応するデータが、次のルールに従って利用できるようになることがあります。
インスタンス要素へのイベントの追加の詳細については、イベントおよびアクションの操作を参照してください。
フォームデザイナには、フォーム内でのアクションを定義する方法が複数あります。
方法 |
説明 |
---|---|
[モデル]タブのアクションノード |
アクション(固有のID付き)作成の場所として[モデル]タブのアクションノードを使用します。その後、フォームの任意の場所からアクションを参照します。 |
[フォーム]タブのイベントエディタ |
[フォーム]タブから起動できるイベントエディタを使用して、フォームコントロールのアクションを作成します。
|
この節の後半では、[モデル]タブでアクションを指定する方法を説明していきます。
プロパティインスペクタに移動して、次のプロパティを指定します。
プロパティ |
指定する内容 |
---|---|
ID |
アクション/イベントハンドラの固有な名前を入力します。 |
イベント名 |
ドロップダウンリストからイベントを選択します。 |
オブザーバ |
(オプション)要素を1つ、オブザーバとして選択します。 |
ターゲット |
(オプション)要素を1つ、アクションのターゲットとして選択します。 |
送信要素により、次の項目が定義されます。
プロパティインスペクタに移動して、次のプロパティを指定します。
送信要素へのイベントの追加の詳細については、イベントおよびアクションの操作を参照してください。
インスタンスデータのルールを設定するには、バインド要素を使用します。 たとえば、ユーザの選択に応じてフィールドを「必須」、「有効」、または「無効」に指定できます。 また、コントロールのバインドを指定するための間接的な方法として、バインド要素を使用することもできます。<ref>または<nodeset>ではなく、コントロールにbind=bindingID属性を使用します。 [モデル]タブでバインド要素を定義したら、UIバインド式を作成するため[フォーム]タブに戻り、それらのバインド要素をフォームコントロールに関連付けます。
プロパティインスペクタにアクセスし、次のように入力してプロパティを完成させます。
プロパティ |
説明 |
---|---|
ID |
バインド要素の固有なIDです。 |
NodesetのXPath |
バインド中のノード。 |
モデル項目のプロパティ |
前に述べたNodesetのXPathで定義されたノードに適用するための、モデル項目のプロパティを定義できます。
|
タイプ |
関連付けられたノードのXMLスキーマデータタイプを指定します。 フォームデザイナには、一部のデータタイプのフォーマットを指定できる便利な機能が搭載されています。 このフォーマットをサポートしているのは、太字で表記されているデータタイプだけです。 [フォーム]タブで設定したフォーマットを、このようなノードにバインドされたコントロールのプロパティインスペクタに適用します。
|
次のようなモデル項目のプロパティを指定できます。
フォームデザイナでは、コントロール(またはフォーム)が、モデル項目プロパティの検証テストに不合格になったことをユーザに簡単に通知できます。
いったん[モデル]タブでバインド要素を定義したら、UIバインド式を作成するため[フォーム]タブに戻り、それらのバインド要素をフォームコントロールに関連付けます。
XFormsでは、XMLイベントモデルをベースにしている、DOM Level 2イベントモデルをサポート、拡張しています。
イベントエディタを使用すると、簡単にイベントハンドラを作成して、XFormsアクションを定義できます。
イベントエディタは、[フォーム]タブと[モデル]タブの両方で使用できます。 次のように表示されます。
イベントエディタは、イベントハンドラを許可している項目を選択すると有効になります。
イベントエディタでは、XFormsのイベントとアクションをサポートしていますが、イベントハンドラ作成時に、必ずしもすべてのイベントが選択肢として提示されるわけではありません。 任意のイベントを、選択肢のボックスか、または[ソース]タブから入力できます。
[イベントタイプ]ドロップダウンリストからイベントを選択するか、または一覧に名前がない場合は、イベント名を入力します。
オブザーバなどのためにイベントハンドラおよびデフォルトのアクションをさらにカスタマイズするには、[カスタムオプション]をクリックします。その後の操作については、イベントディスパッチングをカスタマイズするを参照してください。
これで、イベントエディタでXFormsアクションがイベントハンドラに応答するように指定できます(次に説明します)。
注記: イベントハンドラをインスタンス要素に設定することはできません。インスタンスノードが、単一のチャイルド要素に限定されているからです。 イベントエディタを使用してイベントハンドラをインスタンス要素に追加しようとすると、自動的にモデルに追加されます。
イベントエディタはコードを生成して、コントロールが間違いなくイベントに応答するようにします。
アクションのプロパティの詳細については、XFormsの仕様を参照してください。
フォームのデータ処理ロジックおよびその見た目と使い心地をテストできるように、 フォームデザイナには、次の各タスク用に組み込みツールが搭載されています。
使用するツール |
テスト内容 |
---|---|
XFormsプレビュー |
イベントとデータの処理 XHMTLコンポーネントの見た目と使い心地 |
ブラウザでの表示形式 |
ページでのすべてのコンポーネントの見た目と使い心地 |
XFormsプレビューでは、Swingレンダラを使用して、ページにXFormsコントロールを表示しています。 この機能は、送信済みデータの構造をテストするのに特に便利です。
XFormsプレビューの制限事項 XFormsプレビューでは、XHTMLページに関連付けられたHTMLは表示しません。
ブラウザでの表示形式によりXHTMLレンダラが使用され、単一ページ上のXHTMLとHTML両方が表示されます。 この機能は、レイアウト問題を解決するのに特に便利です。
ブラウザでの表示形式を使用するには、フォームのプロジェクトをアプリケーションサーバに展開する必要があります。 いったんプロジェクトが展開されると、フォームに加えた変更は、直ちに利用できるようになります。プロジェクトを再展開する必要はありません。
フォームがブラウザに表示されます。 「ページが見つかりません」という内容のエラーが発生したら、フォームのプロジェクトが指定サーバに展開されていることを確認してください。
展開の詳細については、『exteNd Directorアプリケーションの開発』の展開に関する章を参照してください。
さまざまなポータルテーマを使用しているフォームがどのように見えるのかをテストすることをお勧めします。
ポータルテーマを使用しているフォームが
どのように見えるのかをテストする
[フォームデザイナ]>[ポータルCSSテーマを設定]の順に選択します。
フィールド |
指定する内容 |
---|---|
ポータルテーマを使用しますか? |
テーマを適用する場合は、[はい]を選択します。 |
このページのポータルテーマを選択してください |
適用するポータルテーマを選択します。 |
このスタイル設定は、設計時にのみ適用されます。 テーマファイルへのリンクは、ファイルが保存されると削除され、ファイルが再度開かれると復元されます(フォームデザイナ内で)。 リンクを完全に削除するには、ダイアログボックスを再度開いて、[いいえ]を選択します。
XFormsプレビューおよびブラウザでの表示形式では、ポータルテーマを使用しません。
フォームをさまざまなフォントサイズでテストすることをお勧めします。
[フォームデザイナ]>[ブラウザフォントの上書きを設定]の順に選択します。
フィールド |
指定する内容 |
---|---|
フォントを上書きしますか? |
設計環境でのブラウザのフォントサイズを上書きする場合は、[はい]を選択します。 |
このページの上書きフォントと単位を選択してください |
使用するフォントサイズと単位を指定します。 |
このスタイル設定は、設計時にのみ適用されます。 テーマファイルへのリンクは、ファイルが保存されると削除され、ファイルが再度開かれると復元されます(フォームデザイナ内で)。 リンクを完全に削除するには、ダイアログボックスを再度開いて、[いいえ]を選択します。
フォームを検証して、フォームのXMLが正しく構成されており、解決できる宣言済みネームスペースのスキーマに準拠していることを確認できます。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...