基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > ユーザーインタフェーステクノロジの概要 > Windchill クライアントアーキテクチャの概要 > JSP とタグ
  
JSP とタグ
いくつかのタグや taglib がフレームワークの一部として提供されます。これらの taglib には、ページにコンポーネントやその他の共通機能を追加するための一連のハンドラが含まれています。以下に、各種コンポーネント (テーブル、ツリー、プロパティパネル、ウィザードなど) を生成するための基本的な手順を示します。
コンポーネントの記述 (JSP)
必要なデータの入手 (データ取得タグ)
コンポーネントのレンダリング (コンポーネントレンダラータグ)
これらのフェーズの設定は、JSP ページのタグハンドラを呼び出すことによって行われます。タグを使用するには、コンポーネントライブラリを含める必要があります。以下のコードの断片によってライブラリを含めます。
<%@ taglib uri="http://www.ptc.com/windchill/taglib/components" prefix="jca"%>
コントローラ - JSP
JSP の基本エレメント
いくつかの重要な JSP フラグメントファイルについて理解する必要があります。まず、最も重要なファイルが begin.jspf です。このファイルは codebase/netmarkets/jsp/util/ にあります。この jspf には以下の目的があります。
すべてのページを囲むシェルをレンダーするためのタグを指定します。
以下のような処理に対応します。
Bean をインスタンス化する (コンテキスト、クリップボードなど)
コマンドを実行する (操作のみ)
一部の JS 関数を含める
ページデータ用のフォーム (メインフォーム) を作成する
ポップアップの終了およびメインページの更新のサポートを提供する
含まれているもう 1 つの jspf が end.jspf です。このファイルも codebase/netmarkets/jsp/util/ にあります。このファイルには以下の目的があります。
DHTML コンテンツを切り替えるためのコンテンツ領域の始まりと終わりを示します。
ページ内で例外が発生したときに、例外を検出して処理します。
ウィザードを作成する場合は、begin.jspf ではなく、netmarkets\jsp\components にある特別な beginWizard.jspf ファイルを使用する必要があります。このファイルは基本的には begin.jspf と同じように動作します。
コンポーネント記述タグ
コンポーネント記述タグは jsp に含まれている 1 つ目のタグです。通常、これらは describe*Tag の形式をとります (例: DescribeTableTag)。
コンポーネント記述タグは、コンポーネントが表示する列/プロパティを定義します。データの取得方法は要求されるプロパティによって異なるので、この定義は JSP で最初に行われます。コンポーネントの記述フェーズで、表示するコンポーネントのインフラストラクチャを指定する "describe" タグハンドラを使用します。describe ハンドラの一例として describeTable があります。これを以下に示します。
<jca:describeTable var="tableDescriptor" id="my.table.id" configurable="true"
type="com.myco.MyType" label="${myLabel}">
<jca:setComponentProperty key="actionModel" value="my action model"/>
<jca:describeColumn id="name"/>
<jca:describeColumn id="nmActions" />
<jca:describeColumn id="status">
<jca:setComponentProperty key="percent" value="true"/>
</jca:describeColumn>
</jca:describeTable>
例の構造
タグには、構造を指定する一連のタグがネステッドされて含まれています。ネステッドされたタグには以下の 2 種類があります。
setComponentProperty
このタグは、親タグ自体の属性として公開されない親タグのプロパティを設定します。このタグを使用すると、常にタグライブラリ定義 (tld) を更新する必要がなく、インフラストラクチャおよび開発者にとって、今後使用するメタデータの柔軟性が高まります。
describeColumn
このタグは、表示する特定の列を記述します。親タグ describeTable と同様に、このタグは子タグ setComponentProperty を受け入れます。プロパティパネルで使用する場合、同一のセマンティックを有する describeProperty タグもあります。
本書における describeTable タグは単に ComponentDescriptor インタフェースを実装する Java Bean を設定します。タグハンドラで使用できる属性は、通常、ComponentDescriptor のプロパティに対応しています。ComponentDescriptor オブジェクトは、後のデータ取得フェーズで役立つことを覚えておいてください。
describe タグハンドラが構築する ComponentDescriptor オブジェクトは、要求される "var" 属性を介してその他の部分と対話します。ハンドラは、どのような var 属性値を指定されても、ComponentDescriptor オブジェクトについて、範囲が設定された変数を作成します。前の例の var 属性は "tableDescriptor" にマッピングされていますが、従来のあらゆる JSP 変数識別子にマッピングできます。var 属性のこのセマンティックは、JSTL タグハンドラから再使用されていることに注意してください。ComponentDescriptor オブジェクトは範囲が設定された属性であるため、Java コードと同様に JSP EL を使用して後でページ内で参照できます。ここで、${varName} 構文などを使用すると後続のタグが記述子を参照できます。
モデル - データ取得タグ
必要なモデルデータをデータ取得タグを介して取得します。通常、これらは get*Tag の形式をとります (例: getModelTag)。
データ取得タグは第 2 フェーズであり、jsp で 2 番目にきます。これは、データ取得タグはコンポーネント記述タグからの記述に基づいてモデルデータを取得するためです。データ取得フェーズでは、コンポーネントの記述を、コンポーネントで使用するデータの実際の取得方法に関する追加情報と結び付けます。テーブルモデルの取得例を以下に示します。
<jca:getModel var="tableModel" descriptor="${tableDescriptor}"
serviceName="com.myco.MyService"
methodName="getMyObjects">
<jca:addServiceArgument value="${myArgument}" type="java.lang.Long"/>
</jca:getModel>
例の構造
記述子と var
タグは、EL を使用して範囲が設定された "tableDescriptor" 変数を検索することによってコンポーネントの記述を取得します。通常、tableDescriptor 変数は、"tableDescriptor" の var 値を保持している前の describe タグによってページに組み込まれます。
describe タグと同様に、get タグは、var 属性値で指定される範囲設定変数としてページに追加される Java Bean を生成します。get タグの場合、生成される Bean は ComponentModel のインスタンスです。
機能
通常、開発者が get タグによって生成される ComponentModel オブジェクトを操作することはありません。代わりに、クライアントインフラストラクチャが起動して ComponentModel に変換する低いレベルの API についての情報を指定します。たとえば、前述のサンプルコードは com.myco.MyService.getMyObjects(myArgument) メソッドを起動し、その結果を取得して ComponentModel オブジェクトに変換します。
ビュー - コンポーネントレンダラータグ
ビューはコンポーネントレンダラータグによってレンダーされます。通常、これらは render*Tag の形式をとります (例: RenderTableTag)。
モデルデータに基づいて HTML および JavaScript が生成されます。コンポーネントレンダラータグを使用したレンダリングは、通常は開発者にとって設定が簡単です。Windchill クライアントアーキテクチャには、"get" タグによって生成される ComponentModel を取得する render タグがいくつかあり、ComponentModel を HTML および JavaScript に変換します。get タグと同様に、これらのタグは EL を使用して範囲が設定された変数データをページから取得します。
<jca:renderTable model="${tableModel}"/>
例の構造
この場合、テーブルレンダラーは、範囲が設定された変数 "tableModel" に割り当てられた入力 ComponentModel を取得し、テーブルとしてレンダリングします。
サポートされるコンポーネント
ウィザード (作成/編集)
テーブル
ツリー
プロパティパネル
属性テーブル
その他のリソース
タグライブラリドキュメンテーション
Windchill タグライブラリドキュメンテーションは製品に付属しており、UI からアクセスできます。ドキュメンテーションを見つけるには、先にカスタマイズの例とツールを有効にし、次にカスタマイズナビゲーションをブラウズしてツールオプションを選択します。
このページの API ドキュメンテーションのセクションに、Windchill タグライブラリドキュメンテーションへのリンクがあります。
関連カスタマイズドキュメント
Windchill クライアントアーキテクチャウィザード
ウィザード処理
単一オブジェクトを作成するウィザードの構築
単一オブジェクトを編集するウィザードの構築
属性パネル