5.VTL・#parse,#includeなど
2005.12.28 株式会社四次元データ 里見玲爾
- 5.1. #parse #include
- 5.2. #stop
- 5.3. #macro
4章に引き続き、VTLの指示子について解説します。
5章では#parse、#include、#stop、#macro指示子について解説します。
5.1. #parse #include
#parse、#includeはテンプレートの中にローカルファイルをインポートするための指示子です。
この二つの違いは、インポートしたファイルをVelocityが解析するかどうかにあります。
#parseの場合、読み込まれたファイルがVTLを含むものであった場合には、Velocityがそれを解析します。
#includeの場合、読み込まれたファイルをテキストファイルとして利用するため、Velocityは解析しません。
#parseでインポートしたファイルの中で再び#parseによるインポートを行うことができ、またさらにその中でも可能です。
これをどれだけ深い階層までできるかは、
設定ファイルであるvelocity.propertiesファイル内のparse_directive.maxdepthによって保存されています。
ちなみにデフォルトは10になっています。
また#includeは複数の引数をとることも可能で、その場合には","で区切ります。
#parse( ファイル名または変数名 ) または #{parse}( ファイル名または変数名 ) #include( ファイル名または変数名 ) または #{include}( ファイル名または変数名 )
#parse()により、再帰も可能です。たとえば次のような2つのvmファイルを考えます。
sample1.vm
#set( $num = 10) #parse("sample2.vm") sample1.vmの処理が終了
sample2.vm
#set( $num = $num - 1) #if( $num > 0) #parse("sample2.vm") #else sample2.vmの処理が終了 #end
sample1.vmをVelocityに解析させると、sample2.vmで再帰的にパースされるたびに$numが10から1ずつ減っていき、 $numが0になると「sample2.vmの処理が終了」と表示され、つぎにVelocityはsample1.vmに戻り、 「sample1.vmの処理が終了」と表示されます。
5.2. #stop
#stopはテンプレートエンジンを停止させるための指示子です。主にデバッグに利用します。
5.3. #macro
#macroはVelocimacroを定義するための指示子です。 VelocimacroとはVelocityで定義できるマクロのことで、詳しくは6章「Velocimacro」を参照してください。