Java CFX タグを作成するには、カスタムタグインターフェイスを実装するクラスを作成します。このインターフェイスには processRequest というメソッドが 1 つ含まれています。このメソッドには、タグで処理する Request および Response オブジェクトが渡されます。
次の手順の例では、呼び出しページにテキスト文字列を書き込む cfx_MyHelloColdFusion という単純な Java CFX タグを作成します。

  1. 次のコードを使用して、エディタでソースファイルを作成します。
public class MyHelloColdFusion implements CustomTag { 
public void processRequest( Request request, Response response ) 
throws Exception { 
String strName = request.getAttribute( "NAME" ) ; 
response.write( "Hello, " + strName ) ; 
} 
}
  1. このファイルに "MyHelloColdFusion.java" という名前を付けて、"WEB_INF/classes" ディレクトリに保存します。
  2. Java コンパイラを使用して、Java ソースファイルをクラスファイルにコンパイルします。JDK に同梱されているコマンドツールを使用する場合は、"classes" ディレクトリで次のコマンドラインを実行します。

javac -classpath cf_root\WEB-INF\lib\cfx.jar MyHelloColdFusion.java

注意:

このコマンドは、Java コンパイラ(javac.exe)がパスに含まれている場合にのみ動作します。パスに含まれていない場合は、完全修飾パスを指定してください。たとえば、Windows の場合は c:¥jdk1.3.1_01¥bin¥javac、UNIX の場合は /usr/java/bin/javac などのように指定します。

コンパイル時にエラーが発生した場合は、ソースコードが正しく入力されているかどうかを確認してください。エラーが発生しなければ、初めての Java CFX タグが正しく作成できたことになります。

ColdFusion ページからの CFX タグの呼び出し

ColdFusion ページから Java CFX タグを呼び出すには、ColdFusion Administrator の CFX タグページで登録した CFX タグの名前を使用します。この名前は、接頭辞 cfx_ の後ろにクラス名(.class 拡張子は除く)を付加したものにします。

ColdFusion Administrator での Java CFX タグの登録

  1. ColdFusion Administrator で、[拡張機能]-[CFX タグ] を選択します。
  2. [Java CFX の登録] をクリックします。
  3. タグ名(例えば、cfx_MyHelloColdFusion)を入力します。
  4. 拡張子 .class を除いたクラス名(例えば、MyHelloColdFusion)を入力します。
  5. (オプション) 説明を入力します。
  6. 送信ボタンをクリックします。
    これで、ColdFusion ページからタグを呼び出すことができます。

ColdFusion ページからの CFX タグの呼び出し

  1. HelloColdFusion カスタムタグを呼び出す次の ColdFusion ページ (.cfm) をエディタで作成します。

<body>
<cfx_MyHelloColdFusion NAME="Les">
</body>
</html>
  1. ColdFusion ページを配置するためのディレクトリにファイルを保存します。たとえば、Windows の場合は "c:¥inetpub¥wwwroot¥cfdocs¥testjavacfx.cfm" に保存し、UNIX の場合は "/home/docroot/cfdocs/testjavacfx.cfm" に保存します。
  2. CFX タグをまだ登録していない場合は、ColdFusion Administrator で登録します(「C++ を使用した CFX タグの開発」の「CFX タグの登録」を参照)。
  3. 次のような適切な URL を使用してブラウザからページをリクエストします。http://localhost/cfdocs/testjavacfx.cfm
    ColdFusion によってページが処理され、「Hello, Les」と表示するページが返されます。エラーが返される場合は、ソースコードが正しく入力されているかどうかを確認してください。

ColdFusion Administrator での CFX タグの削除

  1. ColdFusion Administrator で、[拡張機能]-[CFX タグ] を選択します。
  2. [登録された CFX タグ] リストで、削除するタグの [コントロール] 列の [削除] アイコンをクリックします。

リクエストの処理

Java CFX タグを実装するには、processRequest メソッドに渡される Request および Response オブジェクトを操作する必要があります。また、ColdFusion クエリーを処理する必要のある CFX タグでは、Query オブジェクトも操作する必要があります。Request オブジェクト、Response オブジェクトおよび Query オブジェクトは、WEB-INF/lib/cfx.jar アーカイブ内の com.allaire.cfx パッケージに含まれています。
これらのオブジェクトの詳細については、『CFML リファレンス』の「ColdFusion Java CFX リファレンス」を参照してください。Request オブジェクト、Response オブジェクトおよび Query オブジェクトを使用する Java CFX タグの完全な例については、「ZipBrowser の例」を参照してください。

Request オブジェクト

Request オブジェクトは、CustomTag インターフェイスの processRequest メソッドに渡されます。次の表に、タグに渡された属性(クエリーなど)の取得や、グローバルタグ設定の取得に使用する Request オブジェクトのメソッドを示します。

メソッド

説明

attributeExists

このタグに属性が渡されたかどうかをチェックします。

debug

タグに debug 属性があるかどうかをチェックします。

getAttribute

渡された属性の値を取得します。

getAttributeList

タグに渡されたすべての属性名のリストを取得します。

getIntAttribute

渡された属性の整数値を取得します。

getQuery

このタグにクエリーが渡された場合は、そのクエリーを取得します。

getSetting

グローバルカスタムタグ設定の値を取得します。

これらのインターフェイスに関する詳細なリファレンス情報については、『CFML リファレンス』を参照してください。

Response オブジェクト

Response オブジェクトは、CustomTag インターフェイスの processRequest メソッドに渡されます。次の表に、出力の書き込み、クエリーの生成、および呼び出しページ内の変数の設定に使用する Response オブジェクトのメソッドを示します。

メソッド

説明

write

呼び出しページにテキストを出力します。

SetVariable

呼び出しページの変数を設定します。

addQuery

呼び出しページにクエリーを追加します。

writeDebug

デバッグストリームにテキストを出力します。

これらのインターフェイスに関する詳細なリファレンス情報については、『CFML リファレンス』を参照してください。

Query オブジェクト

Query オブジェクトは、ColdFusion クエリーを操作するためのインターフェイスを提供します。次の表に、名前、行数、および列名の取得や、データ要素の取得および設定を行う Query オブジェクトのメソッドを示します。

メソッド

説明

getName

クエリーの名前を取得します。

getRowCount

クエリーの行数を取得します。

getColumnIndex

クエリー列のインデックスを取得します。

getColumns

クエリー列の名前を取得します。

getData

クエリーからデータ要素を取得します。

addRow

クエリーに新しい行を追加します。

setData

クエリー内にデータ要素を設定します。

これらのインターフェイスに関する詳細なリファレンス情報については、『CFML リファレンス』を参照してください。

Java CFX タグのライフサイクル

Java CFX オブジェクトのインスタンスは、Java CFX タグが呼び出されるたびに新しく作成されます。したがって、CustomTag オブジェクトのメンバーにそのリクエスト固有のインスタンスデータを保存しても問題はありません。CustomTag のすべてのインスタンスからアクセス可能なデータやオブジェクトを保存するには、スタティックデータメンバーを使用します。その場合は、データへのすべてのアクセスがスレッドセーフであることを確認する必要があります。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー