このガイドについて このガイドは、Velocity テンプレート言語 (VTL) のためのリファレンスです。 詳細は、Velocity ユーザガイドを参照してください。 リファレンス 変数 表記: $ [ ! ][ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ][ } ] 例: 通常表記: $mud-Slinger_9沈黙表記: $!mud-Slinger_9正式表記: ${mud-Slinger_9} プロパティ 表記: $ [ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]* .[a..z, A..Z ][ a..z, A-Z, 0..9, -, _ ]* [ } ] 例: 通常表記: $customer.Address正式表記: ${purchase.Total} メソッド 表記: $ [ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]* .[ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]*( [ optional parameter list... ] ) [ } ] 例: 通常表記: $customer.getAddress()正式表記: ${purchase.getTotal()}通常表記(パラメータリスト付き): $page.setTitle( "My Home Page" ) VTL プロパティは、get と set をとる VTL メソッドの簡略表記として使うことができます。 $object.getMethod() や $object.setMethod() は、$object.Method と略記できます。 一般的に、利用できる場合はプロパティを使う方が好ましいです。 プロパティとメソッドの主な違いは、メソッドにはパラメータリストを指定できるということです。 指示子 #set - リファレンスの値を設定 書式: #set( $ref = [ ", ' ]arg[ ", ' ] ) 使い方: $ref - 左辺は、変数リファレンスまたはプロパティリファレンスでなければなりません。arg - 右辺である arg は、 ダブルクォーテーションで囲まれた場合解析されますが、 シングルクォーテーションで囲まれた場合解析されません。 右辺が null と評価された場合、左辺には代入されません。 例: 変数リファレンス: #set( $monkey = $bill )文字列リテラル: #set( $monkey.Friend = 'monica' )プロパティリファレンス: #set( $monkey.Blame = $whitehouse.Leak )メソッドリファレンス: #set( $monkey.Plan = $spindoctor.weave($web) )数値リテラル: #set( $monkey.Number = 123 )範囲演算子: #set( $monkey.Numbers = [1..3] )オブジェクト配列: #set( $monkey.Say = ["Not", $my, "fault"] ) 右辺には、単純な算術式も記述できます: 加算: #set( $value = $foo + 1 )減算: #set( $value = $bar - 1 )乗算: #set( $value = $foo * $bar )除算: #set( $value = $foo / $bar )剰余: #set( $value = $foo % $bar ) #if / #elseif / #else - 条件分岐 書式: #if( [condition] ) [output] [ #elseif( [condition] ) [output] ]* [ #else [output] ] #end 使い方: condition - boolean 型の場合、値そのもので true もしくは false と解釈されます。boolean 型以外の場合、null 以外が true と解釈されます。output - VTL を含みます。 例: 等値演算子: #if( $foo == $bar )より大きい: #if( $foo > 42 )より小さい: #if( $foo < 42 )以上 : #if( $foo >= 42 )以下 : #if( $foo <= 42 )数値の等号: #if( $foo == 42 )文字列等号: #if( $foo == "bar" )論理否定 : #if( !$foo ) #foreach - オブジェクトのリストでループ 書式: #foreach( $ref in arg ) statement #end 使い方: $ref - 最初の変数リファレンスは、リストの項目です。arg - リストのリファレンス(つまりオブジェクト配列/コレクション/マップ)、 配列リスト、範囲演算子のいずれかです。statement - 上記で arg と示されたリスト内にある、 有効なアイテムの分だけ出力する内容です。 この出力は有効なVTLなら何でもよく、ループの繰り返し毎に処理されます。 #foreach() の例を示します(statement ブロックは省略しています): リファレンス: #foreach ( $item in $items )配列リスト: #foreach ( $item in ["Not", $my, "fault"] )範囲演算子: #foreach ( $item in [1..3] ) Velocity は、以下のようにループ回数を取得する簡単な方法を提供します: <table> #foreach( $customer in $customerList ) <tr><td>$velocityCount</td><td>$customer.Name</td></tr> #end </table> ループカウンタの変数リファレンスのデフォルトの名前は、$velocityCount です。 名前は velocity.properties ファイルで指定することが出来ます。 デフォルトで、カウンタは 1 から開始しますが、 velocity.properties ファイルで 0 や 1 にセットできます。 ここで velocity.properties ファイルに現れるループカウンタの プロパティセクションを示します。 # ループカウンタ変数リファレンスのデフォルト名. counter.name = velocityCount # ループカウンタ変数リファレンスのデフォルト開始値. counter.initial.value = 1 #include - ローカルファイルを処理するが、Velocity に解析させない 書式: #include( arg[, arg2, ... argn] ) arg - TEMPLATE_ROOT 下で有効なファイルを参照します。 例: 文字列: #include( "disclaimer.txt", "opinion.txt" )変数: #include( $foo, $bar ) #parse - ローカルテンプレートを処理して Velocity に解析させる 書式: #parse( arg ) arg - TEMPLATE_ROOT 下で有効なファイルを参照します。 例: 文字列: #parse( "lecorbusier.vm" )変数: #parse( $foo ) 再帰解析も可能です。 解析レベルを変更するためには、velocity.properties内の parse_directive.maxdepth を確認してください。 (デフォルトの解析レベルは 10 です。) #stop - テンプレートエンジンを停止する 書式: #stop 使い方: 現在のテンプレートで実行を止めます。 テンプレートをデバッグするのに使えます。 #macro - Velocimacro (VM)を定義する。 必要に応じて VTL テンプレートのセグメントを容易に繰り返せる。 書式: #macro( vmname $arg1[, $arg2, $arg3, ... $argn ] ) [ VM VTL code... ] #end vmname - VM を呼び出すのに使う名前 (#vmname)$arg1 $arg2 [ ... ] - VM に対する引数です。引数の数はいくつでもかまいませんが、呼び出し側の引数の数と定義側の引数の数が一致しなければなりません。[ VM VTL code... ] - テンプレートに置くことができる有効な VTL コードなら何でも、VM に入れることができます。 定義した VM は、テンプレート内で他の VTL 指示子と同様に扱われます。 #vmname( $arg1 $arg2 ) VM は、2つの場所のいずれかで定義できます。 テンプレート ライブラリ: Velocity に同梱のVMである場合と、 カスタムメイドで、ユーザが定義し、サイト固有の VM である場合があります。 どのテンプレートからでも使えます。インライン: 通常のテンプレート内で定義されたもので、 velocity.properties内でvelocimacro.permissions.allowInline=trueとなっている場合のみ使用可能です。 コメント コメントは実行時には解析されません。 単一行コメント 例: ## コメントです。 複数行コメント 例: #* 複数行コメントです。 2行目です。 *#