Velocity

Velocityについて

コミュニティ

ドキュメント

比較

ツール

日本語訳について

このガイドについて

このガイドは、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, -, _ ]*( [ opional parameter list... ] ) [ } ]

例:

  • 通常表記: $customer.getAddress()
  • 正式表記: ${purchase.getTotal()}
  • 通常表記(パラメータ付き): $page.setTitle( "My Home Page" )

VTL プロパティは、getset をとる VTL メソッドのために、 簡略表記として使うことができます。 $object.getMethod()$object.setMethod() は、$object.Method と略記できます。 一般的に、利用できる場合はプロパティを使う方が好ましいです。 プロパティとメソッドの主な違いは、メソッドにはパラメータリストを指定できるということです。


指示子
#set - リファレンスの値を設定

書式:

#set( $ref = [ ", ' ]arg[ ", ' ] )

使い方:

  • $ref - 左辺は、変数リファレンスまたはプロパティリファレンスでなければなりません。
  • arg - 右辺において、arg は、ダブルクォーテーションで囲まれた場合解析され、シングルクォーテーションで囲まれた場合解析されません。

例:

  • 変数リファレンス: #set( $monkey = "bill" )
  • 文字列リテラル: #set( $monkey.Friend = "monica" )
  • プロパティリファレンス: #set( $monkey.Blame = $whitehouse.Leak )
  • メソッドリファレンス: #set( $monkey.Plan = $spindoctor.weave($web) )
  • 数値リテラル: #set( $monkey.Number = 123 )
  • オブジェクト配列: #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" )

#foreach - オブジェクトのリストでループ

書式:

#foreach( $ref1 in $ref2 ) [ statement... ] #end

使い方:

  • $ref1 - 最初の変数リファレンスは、アイテムです。
  • $ref2 - 第二の変数リファレンスは、アイテムを持つリストです。
  • statement - Velocity はリスト ($ref2) 内に有効なアイテム ($ref1) がある間、statement が出力されます。

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つの場所のいずれかで定義することができます。

  1. テンプレート ライブラリ: Velocity に同梱のVMである場合と、 カスタムメイドで、ユーザが定義し、サイト固有の VM である場合があります。 どのテンプレートからでも使えます。
  2. インライン: 通常のテンプレート内で定義されたもので、 velocity.properties内でvelocimacro.permissions.allowInline=trueとなっている場合のみ使用可能です。


コメント

コメントは実行時には解析されません。

単一行コメント

例:

## コメントです。


複数行コメント

例:

#*
複数行コメントです。
2行目です。
*#




このドキュメントは、 山野内 義一 、 新穂 洋史 が訳しました。
コメントがある場合は、 report@jajakarta.org までお願いします。
オリジナル英文 Copyright © 1999-2003, The Apache Software Foundation