目次へ

5.VTL・#parse,#includeなど

2005.12.28 株式会社四次元データ 里見玲爾

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」を参照してください。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp