Velocityコンポーネントで出力をHTMLに埋め込んでみる

kwakui2006-04-20

前回作ったDB読み込みフローを修正してHTMLで整形したアウトプットが出るようにしてみましょう。


たしか前回は
[Start]→[DBGet]→[EndResponse]
という作りだったと思います。


これを
[Start]→[DBGet]→[Velocity]→[EndResponse]
と修正します

VelocityはJakartaプロジェクトのテンプレートエンジンです。テンプレートエンジンって何?って感じですけど、要は今まで何回か出てきたEmbed関数みたいなデータの埋め込みをしてくれるプロダクトなのです。


ここでまたVelocityとは〜と始めるとえらい事になるので説明は省きます。


ASTERIAでVelocityを利用するにはテンプレートファイルを作る必要があります。
今回はこんな感じで作りました。

<html>
#foreach( $r in $in.records )
<table border=1>
    <tr><td width=10%>$velocityCount</td><td width=90%>$r.field(0)</td></tr>
    <tr><td colspan=2>$r.field(1)</td><td></td></tr>
</table>
#end
</html>

簡単に説明しますと、Velocityコンポーネントに渡されたレコードの数だけ「#foreach」内に書かれているテーブルが作られる仕組みになってます。またそのテーブルの中身は差し込まれたレコードの1番目と2番目のフィールドの値が埋め込まれています。


このファイルをVelocityコンポーネントのTemplateFilenameプロパティで指定してあげます。
コンパイルして問題がないことを確認してください。


では実行してみましょう。
事前にDBへいくつかデータを書き込んでおいてください。
例として

  1. タイトル/今日の天気、本文/今日は晴れでした
  2. タイトル/今日の出来事、本文/散歩してきました
  3. タイトル/今日の株価、本文/+100円でした

こんなデータが入っていたとします。


そして実行結果はこうなります。

1今日の天気
今日は晴れでした
2今日の出来事
散歩してきました
3今日の株価
+100円でした

まぁお世辞にもカッコイイとはいえませんけど、また少しらしくなってきたでしょ?


Velocityは資料が少なくて苦労することが多いのですが、WEBでなんとか調べてみてください。Velocityテンプレートを作るにはVTLの知識が必要です。偉そうなことを書いてますが、私自身あんまりよく知りません。(ごめんなさい!!)


ASTERIA 実践ガイド ?マウスで楽々プログラミング

ASTERIA 実践ガイド ?マウスで楽々プログラミング