|
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 )
|
|
|
#parse - ローカルテンプレートを処理して Velocity に解析させる
|
書式:
#parse( arg )
- arg - TEMPLATE_ROOT 下で有効なファイルを参照します。
例:
- 文字列: #parse( "lecorbusier.vm" )
- 変数: #parse( $foo )
再帰解析も可能です。
解析レベルを変更するためには、velocity.properties内の parse_directive.maxdepth を確認してください。
(デフォルトの解析レベルは 10 です。)
|
|
|
#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 指示子と同様に扱われます。
VM は、2つの場所のいずれかで定義できます。
- テンプレート ライブラリ: Velocity に同梱のVMである場合と、
カスタムメイドで、ユーザが定義し、サイト固有の VM である場合があります。
どのテンプレートからでも使えます。
- インライン: 通常のテンプレート内で定義されたもので、
velocity.properties内でvelocimacro.permissions.allowInline=trueとなっている場合のみ使用可能です。
|
|
|
|
|