2008/04/08からのアクセス回数 18118 なぜVelocityを使うのか †Vecotiy活用術 でも示していますが、もう一度整理してみると
が、挙げられます。 プログラムが仕事の私にとって最後の「汎用のテンプレート」を習得することは大きなメリットです。 Velocityテンプレートをブラウザーで表示した例 †Recipeの編集画面のVelocityテンプレートをブラウザーで表示すると以下のように表示されます。 Nameの値を保持しているrecipe.nameがテキスト領域に表示され、変数と値の対応を簡単に確認することが できます。 WebアプリケーションによってHtmlに変換された画面は、 です。 VTLの構文 †Velocityテンプレートで使用されているテンプレート言語(以下VTLと記す)の構文は、非常にシンプルです。 詳しくは、 VTLのページ を参照してください。 変数の値の参照 †変数の値を参照する方法には、以下の3通りがあります。
通常表記と沈黙表記の違いは、参照する変数の値がnullの場合に$変数名を表示するのか、何も表示しないかです。 変数属性(プロパティ)の参照 †属性へのアクセスは、変数名.(ドット)の後に属性名を指定します。 変数がハッシュマップの場合には、キーを属性として指定することでハッシュマップの値を参照することができます。 メソッド呼び出し †$変数名.メソッド名()または$変数名.メソッド名(パラメータ)の形式でjavaのメソッドを呼び出すことができます。 変数への代入 †変数への代入は以下の形式で使用します。 #set($lref = rref)
例)moneyに123をセットします #set($money="123") 条件分岐 †条件分岐処理は、以下の形式で使用します。 #if (condition) output #elseif (condition) output #else output #end
ループ †ループ処理は、以下の形式で使用します。 #foreach($ref in $list) statement #end
インクルード指定 †vmのインクルードには、parseとincludeの2種類があります。
使用方法は、 #include(テンプレートファイル名) #parse(テンプレートファイル名) です。 マクロ定義 †よく使う処理をマクロとして登録することができます。 マクロの定義は以下の通りです。 #macro($vmname $arg1, $arg2, ... $argn) VTL 構文 #end
マクロの呼び出しは、#vmname( $arg1 $arg2 ) のように呼び出します($arg1と$arg2の間にカンマがないことに注意してください) コメント文 †##行内コメントまたは、#*複数行コメント*#の形式で指定します。 Velocityをビューとする設定方法 †viewResolverの指定 †ビューの方式を指定しているのは、coverc-servlet.xmlのviewResolverタグの部分です。 これを以下の定義に置き換えます。 <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath" value="WEB-INF/velocity/" /> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="suffix" value=".vm" /> </bean> この設定方法では、日本語を表示する場合ブラウザーのテキストエンコーディングをその都度 指定する必要があります。 日本語を表示す設定は、Spring-MVCのビューにVelocityを使いたいを参照してください。 ライブラリの追加 †Velocityを使用するため、pom.xmlにvelocityのライブラリを追加します。 <dependency> <groupId>velocity</groupId> <artifactId>velocity-dep</artifactId> <version>1.4</version> </dependency> いつものように、クラスパスを変更します。 $ rm .project .classpath $ mvn eclipse:eclipse -DdownloadSources=true Velocityテンプレートの追加 †Velocityテンプレートは、src/main/webapp/WEB-INF/velocityディレクトリに配置します。 editRecipe.vmは、次のようになります。 <html> <head> <title>Recipes</title> </head> <body> Edit Recipe </body> <form method="post" action="#springUrl("/editrecipe.htm")"> <input type="hidden" name="id" value="$!recipe.id"> <table> <tr> <td>Name:</td> <td><input type="text" name="name" value="$!recipe.name" size="20"></td> <td></td> </tr> <tr> <td colspan="3"> <input type="submit" value="Save Changes"/> </td> </tr> </table> </form> </html> 同様にswitchboard/listRecipes.vmは、次のようになります。 <html> <head> <title>Recipes</title> </head> <body> <table> #foreach ($recipe in $recipeList) <tr> <td>${recipe.id}</td> <td>${recipe.name}</td> #set( $editLink = "/editrecipe.htm?id=${recipe.id}" ) <td><a href="#springUrl(${editLink})">[edit]</a></td> </tr> #end </table> </body> </html> これだけの処理で、ビューでVelocityを使用することができるようになります。 簡単でしょう!! コメント †この記事は、 皆様のご意見、ご希望をお待ちしております。 Tweet |