1. Grundlegende Grammatik
1. „#“ wird verwendet, um Velocity-Skriptanweisungen zu identifizieren, einschließlich #set, #if, #else, #end, #foreach, #end, #iinclude, #parse, #macro usw.;
wie:
#if($info.imgs)
<img src="http://VeVB.COm/ydmx_lei/blog/$info.imgs" border=0>
#anders
<img src="http://VeVB.COm/ydmx_lei/blog/noPhoto.jpg">
#Ende
2. „$“ wird zur Identifizierung eines Objekts verwendet (oder als Variable verstanden);
Zum Beispiel: $i, $msg, $TagUtil.options(...) usw.
3. „{}“ wird verwendet, um die Velocity-Variable eindeutig zu identifizieren;
Beispielsweise gibt es auf der Seite „$someonename“. Zu diesem Zeitpunkt verwendet Velocity „someonename“ als Variablennamen. Wenn unser Programm das Namenszeichen unmittelbar nach der Variablen „jemand“ anzeigen möchte, sollte die obige Bezeichnung in „${someone“ geändert werden . }Name.
4. „!“ wird verwendet, um zu erzwingen, dass nicht vorhandene Variablen leer angezeigt werden.
Wenn die Seite beispielsweise $msg enthält und das msg-Objekt einen Wert hat, wird der Wert von msg angezeigt. Wenn kein msg-Objekt vorhanden ist, wird das $msg-Zeichen auf der Seite angezeigt. Das ist es, was wir nicht wollen. Um nicht vorhandene Variablen oder Objekte mit Null-Variablenwerten als leer anzuzeigen, müssen Sie nur ein „!“-Zeichen vor dem Variablennamen hinzufügen.
Zum Beispiel: $!msg
2. Best Practices in EasyJWeb
Theoretisch können Sie alle Velocity-Skripte und -Funktionen in der EasyjWeb-Vorlage verwenden. Wir empfehlen jedoch nicht, zu viele komplexe Skriptausdrücke in der Schnittstellenvorlage zu verwenden. geschweige denn Variablendeklarationen, logische Operatoren usw. zur Schnittstellenvorlage hinzufügen.
In EasyJWeb stellen wir fünf grundlegende Vorlagenskriptanweisungen bereit, die grundsätzlich die Anforderungen aller Anwendungsvorlagen erfüllen können. Diese vier Vorlagenanweisungen sind sehr einfach und können direkt vom Schnittstellendesigner hinzugefügt werden. In vielen aktuellen EasyJWeb-Anwendungspraktiken sehen wir, dass nur die folgenden vier einfachen Vorlagenskriptanweisungen in allen Schnittstellenvorlagen implementiert werden können:
1. $!obj gibt das Objektergebnis direkt zurück.
Beispiel: Zeigen Sie den Wert der Java-Objektnachricht im HTML-Tag an. <p>$!msg</p>
Zeigen Sie den Wert des vom HtmlUtil-Objekt verarbeiteten msg-Objekts im HTML-Tag <p>$!HtmlUtil.doSomething($!msg)</p> an
2. #if($!obj) #else #end Urteilsaussage
Beispiel: In verschiedenen Open-Source-Anwendungen von EasyJWeb sehen wir häufig Beispiele für Popup-Eingabeaufforderungsnachrichten msg.
#if($msg)
<Skript>
alarm('$!msg');
</script>
#Ende
Das obige Skript bedeutet, dass, wenn das Objekt msg vorhanden ist, der folgende Inhalt wie <script> ausgegeben wird.
3. #foreach( $info in $list) $info.someList #end Schleifen, um die Objekte in der Sammlungsliste zu lesen und sie entsprechend zu verarbeiten.
Zum Beispiel: das HTML-Schnittstellenvorlagenskript zum Anzeigen beliebter Themen auf der Forum-Homepage des EasyJF-Open-Source-Forensystems (0.3):
#foreach( $info in $hotList1)
<a href="/bbsdoc.ejf?easyJWebCommand=show&&cid=$!info.cid" target="_blank">$!info.title</a><br>
#Ende
Das obige Skript gibt an, dass es die Objekte in der hotList1-Sammlung durchläuft und den relevanten Inhalt des Objekts ausgibt.
4. #macro(macroName)#end ist ein Aufruf einer Skriptfunktion (Makro) und wird nicht für die umfangreiche Verwendung in Schnittstellenvorlagen empfohlen.
Beispiel: Im mit EasyJWeb Tools schnell generierten Beispiel zum Hinzufügen, Löschen, Ändern und Abfragen können Sie auf die Titelleiste der Liste klicken, um die aufsteigende und absteigende Reihenfolge anzuzeigen. Dies ist ein Vorlageninhalt, den wir häufig in EasyJWeb-Anwendungen sehen um den Sortierstatus anzuzeigen.
Funktionsdefinition (Makrodefinition), normalerweise an erster Stelle
#macro(orderPic $type)
#if ($orderField.equals($type))
<img src="http://VeVB.COm/ico/${orderType}.gif">
#Ende
#Ende
Der konkrete Aufruf lautet: <font color="#FFFFFF">title#orderPic("title")</font>
5. Fügen Sie die Datei #inclue("Name der Vorlagendatei") oder #parse("Name der Vorlagendatei") ein.
Wird hauptsächlich zur Bearbeitung von Seiten mit demselben Inhalt verwendet, z. B. dem oberen oder unteren Inhalt jeder Website.
Informationen zu den Verwendungsmethoden finden Sie in den Anwendungen im EasyJF Open Source Blog und im EasyJF Open Source Forum!
Zum Beispiel: #parse("/blog/top.html") oder #include("/blog/top.html")
Der Unterschied zwischen „parse“ und „include“ besteht darin, dass ein Velocity-Skript-Tag in der eingebundenen Datei weiter analysiert wird, während „include“ unverändert angezeigt wird.
3. Über die Verwendung von #set
Als letzten Ausweg sollten Sie Velocity-Skriptvariablen nicht selbst in der Seitenansicht deklarieren, d. h. #set so selten wie möglich verwenden. Manchmal müssen wir eine Seriennummer auf der Seite anzeigen, aber das Programmobjekt enthält dieses Seriennummernattribut nicht. Sie können es selbst definieren. In einem zyklischen System sieht es beispielsweise wie folgt aus:
#set ($i=0)
#foreach($info in $list)
Seriennummer:$i
#set($i=$i+1)
#Ende
4. Zusammenfassung der Syntax des Velocity-Skripts
1. Anweisung: #set ($var=XXX)
Die linke Seite kann den folgenden Inhalt enthalten
Kopieren Sie den Codecode wie folgt:
Variablenreferenz
String-Literal
Immobilienreferenz
Methodenreferenz
Zahlenliteral #set ($i=1)
ArrayList #set ($arr=["yt1",t2"])
Arithmetische Operatoren
2. Hinweis:
Einzelne Zeile ## XXX
Mehrere Zeilen #* xxx
xxxx
xxxxxxxxxxxx*#
Verweist auf den Referenztyp
3. Variablen
Beginnt mit „$“, das erste Zeichen muss ein Buchstabe sein. Zeichen, gefolgt von einem VTL-Bezeichner (a .. z oder A .. Z).
Variablen können die folgenden Zeichen enthalten:
alphabetisch (a .. z, A .. Z)
numerisch (0 .. 9)
Bindestrich ("-")
Unterstrich ("_")
4.Eigenschaften
$Identifier.Identifier
$Benutzername
Der Namenswert in der Hashtabelle user. Ähnlich: user.get("name")
5. Methoden
Objekt user.getName() = $user.getName()
6. Formale Referenznotation
Verwenden Sie {}, um Variablennamen von Zeichenfolgen zu trennen
wie
#set ($user="csy"}
${user}name
csyname zurückgeben
$Benutzername
$!Benutzername
Der Unterschied zwischen $ und $!
Wenn der Benutzername nicht gefunden wird, gibt $username die Zeichenfolge „$username“ zurück und $!username gibt die leere Zeichenfolge „“ zurück.
7. Doppelte Anführungszeichen und Anführungszeichen
#set ($var="helo")
test"$var" gibt testhello zurück
test'$var' gibt test'$var' zurück
Sie können die Standardverarbeitungsmethode ändern, indem Sie stringliterals.interpolate=false festlegen
8. Bedingte Anweisungen
Kopieren Sie den Codecode wie folgt:
#if( $foo )
<strong>Geschwindigkeit!</strong>
#Ende
#if($foo)
#elseif()
#anders
#Ende
Wird ausgeführt, wenn $foo null oder der falsche Wert eines booleschen Objekts ist.
9. Logische Operatoren: == && || !
10. Schleifenanweisung #foreach($var in $arrays) //Die Sammlung enthält die folgenden drei Arten von Vektoren, eine Hashtabelle oder ein Array
#Ende
#foreach( $product in $allProducts )
<li>$product</li>
#Ende
#foreach( $key in $allProducts.keySet() )
<li>Schlüssel: $key -> Wert: $allProducts.get($key)</li>
#Ende
#foreach( $customer in $customerList )
<tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#Ende
11. Die Variable „velocityCount“ ist in der Konfigurationsdatei definiert
Kopieren Sie den Codecode wie folgt:
# Standardname des Schleifenzählers
# Variablenreferenz.
Direktive.foreach.counter.name = VelocityCount
# Standardstartwert der Schleife
# Zählervariablenreferenz.
Direktive.foreach.counter.initial.value = 1
12. Dateien einbinden
#include( „one.gif“, „two.txt“, „ three.htm“ )
13. Importskript analysieren
#parse("me.vm" )
14. #stop stoppt die Ausführung und kehrt zurück
15. Definieren Sie das Makro Velocimacros, was der Funktionsunterstützung einschließlich Funktionen entspricht
#makro(d)
<tr><td></td></tr>
#Ende
Anruf
#D()
16. Makros mit Parametern
Kopieren Sie den Codecode wie folgt:
#macro( tablerows $color $somelist )
#foreach( $something in $somelist )
<tr><td bgcolor=$color>$etwas</td></tr>
#Ende
#Ende
17. Bereichsbetreiber
#foreach( $foo in [1..5] )