2 13 2 インライン リスト内でのウェブレットの使用

LANSA WAM

2.13.2 インライン・リスト内でのウェブレットの使用

インライン・リスト内でウェブレットを使用するには、事前に「インライン認識」がされていなければなりません。インライン・リストにインライン認識されていないウェブレットをドロップしようとすると、警告が出ます。

インライン・ウェブレットの外観と動作はインラインでないものとほとんどの部分で同じです。主な相違点は、リストにドロップした時と、プロパティを変更する度にインライン・ウェブレットが再度生成されることです。このため、知っておかなくてはいけない点がいくつかあります。

フィールドと列の値へのアクセス

インラインでないリストでは、$COLUMNNAME XSL変数の列の値またはキー('field-value', 'FIELDNAME')のようなXPath式のフィールド値 にアクセスします。インライン・ウェブレットの中のXSLは設計時に実行されるため、このようなXSLは実行時のデータ・アクセスに使用することはできません。ウェブレット・プロパティで実行時のデータにアクセスするのに使用できる特別XSL拡張ファンクションがいくつかあります。次のようなものです。

  • wd:column-value('COLUMNNAME') - 指定された列の値を返します。プロパティに#COLUMNNAMEと入力すると、LANSAエディターが自動的にそれをwd:column-valueに変換します。
  • wd:field-value('FIELDNAME') - 指定されたフィールドの値を返します。
  • wd:variable('VARNAME') - 指定されたMTXT もしくはシステム変数の値を返します。
  • wd:row-index() - リストの現在行の行番号を返します。番号は、4桁になるように0で右詰されます。

これらはXSLファンクションであり、XPath式のエリアに入力する必要があります。

これらの拡張機能はXSL変換が完了した後も結果のドキュメントに残されていなければなりません。(XSL実行後に、WAMランタイムにより解析されます。)このため、XSLプロセッサで処理される時に、自分自身を戻します。例えば、ウェブレットのプロパティの"{wd:column-value('COLUMNNAME')}" は、プロパティの変数に"{wd:column-value('COLUMNNAME')}"の文字列を返します。この文字列を直接HTML属性に配置することができます。これをHTMLのコンテンツに配置したい場合は、まずstd_util.xslで提供されているwdTagFromAttr.privateテンプレートを使用して、これを特別なタグに変換してください。

コンテキスト・データへのアクセス

フィールドや列の値と同様、通常WebroutineXMLの<lxml:context>セクションにあるコンテキスト情報は、XSLによって実行時にアクセスすることはできません。ウェブレット・プロパティのコンテクスト・データにアクセスするには、以下のXSL拡張機能を使用してください。

  • wd:web-user()
  • wd:webapplication()
  • wd:webapplication-title()
  • wd:webroutine()
  • wd:webroutine-title()
  • wd:service-name()
  • wd:partition()
  • wd:language()
  • wd:images-path()
  • wd:action-request()
  • wd:layout-name()
  • wd:dbcs()
  • wd:align-right()
  • wd:check-numeric()
  • wd:debug()
  • wd:trace()
  • wd:task()

実行時データを使用できないプロパティ

ウェブレット・プロパティには、ウェブレットがどのように組み立てられるかに影響を与えるものや、CSSまたはJavaScriptの動作を制御するためにブラウザに引き渡されるものがあります。インライン・ウェブレットは設計時に構築されるため、実行時データを使用しての組み立てに影響を与えることはできません。例えば、標準ビジュアライゼーション・ウェブレットのいずれかのdisplay_modeプロパティを見てください。「input」の値はHTML の<input> タグを生成します。「output」の値は <span>を生成します。これらのプロパティで実行時データを使用する必要がある場合は、インラインでないリストを使用します。

この例外は、hide_ifdisabledのようなブール値プロパティです。

wd:boolean プロパティ

hide_if disabledのようなブール値プロパティの値はウェブレットがどのように組み立てられるかに影響を与えますが、wd:boolean式を含む文字列を使用することで、実行時のデータを受け取ることもできます。

wd:boolean式の構文は、実行時のパフォーマンスを最適化するように設計されているため、簡単に読みとることができないかもしれません。ただし、wd:boolean式を受け取るプロパティが式の編集ダイアログを提供するので、この式を読む必要はありません。プロパティの右にある省略記号のボタンをクリックし、プロパティ・エディターを開いてください。

インライン・ウェブレットの更新

Webroutineで使用されるインライン・ウェブレットはウェブレットが変更された時に自動的には更新されません。インライン・ウェブレットを更新するには、リフレッシュをする必要があります。この方法はいくつかあります。

  • ウェブレットのプロパティを修正。
  • [デザイン]タブでWebroutineを開き、ウェブレットを右クリックしてコンテキト・メニューから[インライン ウェブレットの更新]を選択。
  • [デザイン]タブでWebroutineを開き、[Web] メニューから[インライン ウェブレットの更新]を選択。
  • [リポジトリ]もしくは[お気に入り]タブからWAMを選択し、コンテキスト・メニューから[インライン ウェブレットの更新]を選択。多数のWAMやWebroutineの為にインラインのウェブレットを更新する際はこの方法が推奨されます。
  • [リポジトリ]もしくは[お気に入り]のタブからWAMを選択すると、各WAMとそのWebroutineが開かれ、Webroutineの中にインラインウェブレットがないか、また古すぎないかを確認することができます。選択されたWAMの数や複雑性、インライン・ウェブレットの数にもよりますが、このプロセスには時間がかかる場合があります。
  • Webroutineを開くと、更新を必要とするインライン・ウェブレットがあるかどうかがLANSAエディターにより示されます。

    このメッセージは開かれているWebroutineにのみ適用されることに注意してください。WAMに複数のWebroutineがある場合は、各Webroutineを開いて、ウェブレットのバージョンの違いを確認してください。

    [インライン ウェブレットの更新]を選択した時に、どのウェブレットを更新するか選択することができます。

    省略値では全てのウェブレットが事前に選択されます。それら全てを更新することが推奨されています。