1. 基本的な文法
1. 「#」は、#set、#if、#else、#end、#foreach、#end、#iinclude、#parse、#macro などの Velocity スクリプト ステートメントを識別するために使用されます。
のように:
#if($info.imgs)
<img src="http://VeVB.COm/ydmx_lei/blog/$info.imgs" border=0>
#それ以外
<img src="http://VeVB.COm/ydmx_lei/blog/noPhoto.jpg">
#終わり
2. 「$」はオブジェクトを識別するために使用されます(または変数として理解されます)。
例: $i、$msg、$TagUtil.options(...) など。
3. 「{}」は速度変数を明確に識別するために使用されます。
たとえば、ページには $someonename があります。この時点で、Velocity は変数 someone の直後に名前文字を表示したい場合、上記のラベルを ${someone に変更する必要があります。 。 }名前。
4. 「!」は、存在しない変数を強制的に空白として表示するために使用されます。
たとえば、ページに $msg が含まれている場合、msg オブジェクトに値がある場合は msg の値が表示され、msg オブジェクトがない場合は $msg 文字がページに表示されます。これは望ましくないことです。null 変数値を持つ存在しない変数またはオブジェクトを空白として表示するには、変数名の前に「!」記号を追加するだけです。
例: $!msg
2. EasyJWeb のベスト プラクティス
理論的には、EasyjWeb テンプレートですべての Velocity スクリプトと関数を使用できますが、インターフェイス テンプレートで複雑なスクリプト式を多用しすぎることはお勧めしません。最後の手段として、インターフェイス テンプレートに複雑なロジックを追加しないでください。インターフェイス テンプレートに変数宣言や論理演算子などを追加することは言うまでもありません。
EasyJWeb では、基本的にすべてのアプリケーション テンプレートの要件を満たすことができる 5 つの基本的なテンプレート スクリプト ステートメントが提供されています。これら 4 つのテンプレート ステートメントは非常に単純で、インターフェイス設計者が直接追加できます。現在の EasyJWeb アプリケーションの多くの実践では、すべてのインターフェイス テンプレートの中で、次の 4 つの単純なテンプレート スクリプト ステートメントのみを実装できることがわかります。
1. $!obj はオブジェクトの結果を直接返します。
例: HTML タグ内の Java オブジェクト msg の値を表示します。 <p>$!msg</p>
HtmlUtil オブジェクトによって処理された msg オブジェクトの値を HTML タグ <p>$!HtmlUtil.doSomething($!msg)</p> に表示します。
2. #if($!obj) #else #終了判定文
例: EasyJWeb のさまざまなオープン ソース アプリケーションでは、ポップアップ プロンプト メッセージ msg の例がよく見られます。
#if($msg)
<スクリプト>
アラート('$!msg');
</script>
#終わり
上記のスクリプトは、オブジェクト msg オブジェクトが存在する場合、以下のような <script> の内容が出力されることを意味します。
3. #foreach( $info in $list) $info.someList #end コレクション リスト内のオブジェクトを読み取り、それに応じて処理するループ。
例: EasyJF オープン ソース フォーラム システム (0.3) のフォーラム ホームページで人気のあるトピックを表示するための HTML インターフェイス テンプレート スクリプト:
#foreach( $hotList1 の $info)
<a href="/bbsdoc.ejf?easyJWebCommand=show&&cid=$!info.cid" target="_blank">$!info.title</a><br>
#終わり
上記のスクリプトは、hotList1 コレクション内のオブジェクトをループし、オブジェクトの関連コンテンツを出力することを示しています。
4. #macro(macroName)#end はスクリプト関数 (マクロ) 呼び出しであり、インターフェイス テンプレートでの広範な使用は推奨されません。
例: EasyJWeb ツールを使用して迅速に生成された追加、削除、変更、クエリの例では、リストのタイトル バーをクリックすると昇順と降順が表示されます。これは、EasyJWeb アプリケーションでよく見かけるテンプレート コンテンツです。ソート状況を表示します。
関数 (マクロ) 定義。通常は最初に配置されます。
#macro(orderPic $type)
#if ($orderField.equals($type))
<img src="http://VeVB.COm/ico/${orderType}.gif">
#終わり
#終わり
具体的な呼び出しは次のとおりです: <font color="#FFFFFF">title#orderPic("title")</font>
5. ファイル #inclue("テンプレート ファイル名") または #parse("テンプレート ファイル名") をインクルードします。
主に各Webサイトの上部や下部など、同じ内容のページを扱う場合に使用されます。
利用方法はEasyJF Open Source BlogやEasyJF Open Source Forumのアプリケーションを参考にしてください!
例: #parse("/blog/top.html") または #include("/blog/top.html")
parse と include の違いは、インクルードされたファイルに Velocity スクリプト タグがある場合はさらに解析されるのに対し、include はそのまま表示されることです。
3.#setの使用について
最後の手段として、ページ ビューで Velocity スクリプト変数を自分で宣言しないでください。つまり、#set の使用は最小限に抑えてください。ページにシリアル番号を表示する必要がある場合がありますが、プログラム オブジェクトにはこのシリアル番号属性が含まれていません。これは自分で定義できます。たとえば、循環システムでは次のようになります。
#set ($i=0)
#foreach($list 内の $info)
シリアル番号:$i
#set($i=$i+1)
#終わり
4. Velocity スクリプト構文の概要
1. ステートメント: #set ($var=XXX)
左側には次のコンテンツを含めることができます
次のようにコードをコピーします。
変数参照
文字列リテラル
プロパティ参照
メソッドリファレンス
数値リテラル #set ($i=1)
ArrayList #set ($arr=["yt1","t2"])
算術演算子
2. 注:
単一行 ## XXX
複数行 #* xxx
xxxx
xxxxxxxxxxxx*#
参照 参照タイプ
3. 変数
「$」で始まり、最初の文字は文字である必要があります。文字の後に VTL 識別子 (a .. z または A .. Z) が続きます。
変数には次の文字を含めることができます。
アルファベット (a .. z、A .. Z)
数値 (0 .. 9)
ハイフン(「-」)
アンダースコア ("_")
4.特性
$識別子.識別子
$ユーザー名
ハッシュテーブルのユーザーの名前の値。user.get("name") と同様です。
5. 方法
オブジェクト user.getName() = $user.getName()
6.正式な参照表記
{} を使用して変数名と文字列を区切ります
のように
#set ($user="csy"}
${ユーザー}名
csynameを返す
$ユーザー名
$!ユーザー名
$と$の違い!
ユーザー名が見つからない場合、$username は文字列 "$username" を返し、$!username は空の文字列 "" を返します。
7. 二重引用符と引用符
#set ($var="ヒーロー")
test"$var" は testhello を返します
テスト'$var'はテスト'$var'を返します
stringliterals.interpolate=false を設定することで、デフォルトの処理方法を変更できます。
8. 条件文
次のようにコードをコピーします。
#if( $foo )
<strong>速度!</strong>
#終わり
#if($foo)
#elseif()
#それ以外
#終わり
$foo が null または Boolean オブジェクトの false 値の場合に実行されます。
9. 論理演算子: == && || !
10. ループ ステートメント#foreach($var in $arrays) //コレクションには次の 3 種類の Vector、Hashtable、または Array が含まれます
#終わり
#foreach( $product in $allProducts )
<li>$product</li>
#終わり
#foreach( $key in $allProducts.keySet() )
<li>キー: $key -> 値: $allProducts.get($key)</li>
#終わり
#foreach( $customerList の $customer )
<tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#終わり
11. VelocityCount 変数は構成ファイルで定義されます
次のようにコードをコピーします。
# ループカウンターのデフォルト名
# 変数参照。
directive.foreach.counter.name = VelocityCount
# ループのデフォルトの開始値
# カウンタ変数の参照。
ディレクティブ.foreach.counter.initial.value = 1
12. インクルードファイル
#include( "one.gif","two.txt","three.htm" )
13.インポートスクリプトを解析する
#parse("me.vm" )
14. #stop は実行を停止して戻ります
15. 関数を含む関数サポートに相当するマクロ Velocimacros を定義する
#マクロ(d)
<tr><td></td></tr>
#終わり
電話
#d()
16. パラメータを含むマクロ
次のようにコードをコピーします。
#macro( tablerows $color $somelist )
#foreach( $somelist の $something )
<tr><td bgcolor=$color>$something</td></tr>
#終わり
#終わり
17. 範囲演算子
#foreach( $foo in [1..5] )