1. ไวยากรณ์พื้นฐาน
1. "#" ใช้เพื่อระบุคำสั่งสคริปต์ Velocity รวมถึง #set, #if, #else, #end, #foreach, #end, #iinclude, #parse, #macro ฯลฯ
ชอบ:
#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 จะใช้ someonename เป็นชื่อตัวแปร หากโปรแกรมของเราต้องการแสดงอักขระชื่อทันทีหลังจากตัวแปร someone ป้ายกำกับด้านบนควรเปลี่ยนเป็น ${someone . }ชื่อ.
4. "!" ใช้เพื่อบังคับตัวแปรที่ไม่มีอยู่ให้แสดงเป็นค่าว่าง
ตัวอย่างเช่น เมื่อเพจมี $msg ถ้าวัตถุ msg มีค่า ค่าของ msg จะปรากฏขึ้น หากไม่มีวัตถุ msg อักขระ $msg จะปรากฏบนเพจ นี่คือสิ่งที่เราไม่ต้องการ ในการแสดงตัวแปรหรือวัตถุที่ไม่มีค่าตัวแปรว่าง คุณจะต้องเพิ่มเครื่องหมาย "!" ก่อนชื่อตัวแปร
เช่น: $!msg
2. แนวปฏิบัติที่ดีที่สุดใน EasyJWeb
ตามทฤษฎี คุณสามารถใช้สคริปต์และฟังก์ชัน Velocity ทั้งหมดในเทมเพลต EasyjWeb ได้ แต่เราไม่แนะนำให้คุณใช้นิพจน์สคริปต์ที่ซับซ้อนมากเกินไปในเทมเพลตอินเทอร์เฟซ วิธีสุดท้ายคืออย่าเพิ่มตรรกะที่ซับซ้อนใดๆ ให้กับเทมเพลตอินเทอร์เฟซ ไม่ต้องพูดถึงการเพิ่มการประกาศตัวแปร ตัวดำเนินการเชิงตรรกะ ฯลฯ ให้กับเทมเพลตอินเทอร์เฟซ
ใน EasyJWeb เรามีคำสั่งสคริปต์เทมเพลตพื้นฐานห้ารายการ ซึ่งโดยพื้นฐานแล้วสามารถตอบสนองความต้องการของเทมเพลตแอปพลิเคชันทั้งหมดได้ คำสั่งเทมเพลตทั้งสี่นี้เรียบง่ายมากและสามารถเพิ่มได้โดยตรงโดยผู้ออกแบบอินเทอร์เฟซ ในแนวทางปฏิบัติของแอปพลิเคชัน EasyJWeb ในปัจจุบันจำนวนมาก เราพบว่ามีเพียงคำสั่งสคริปต์เทมเพลตง่ายๆ สี่คำสั่งต่อไปนี้เท่านั้นที่สามารถนำไปใช้ในเทมเพลตอินเทอร์เฟซทั้งหมด:
1. $!obj ส่งคืนผลลัพธ์อ็อบเจ็กต์โดยตรง
ตัวอย่างเช่น: แสดงค่าของข้อความอ็อบเจ็กต์ Java ในแท็ก html <p>$!ข้อความ</p>
แสดงค่าของวัตถุ msg ที่ประมวลผลโดยวัตถุ HtmlUtil ในแท็ก html <p>$!HtmlUtil.doSomething($!msg)</p>
2. #if($!obj) #else #end คำพิพากษา
ตัวอย่างเช่น: ในแอปพลิเคชันโอเพ่นซอร์สต่างๆ ของ EasyJWeb เรามักจะเห็นตัวอย่างข้อความแจ้งเตือนป๊อปอัป msg
#if($ข้อความ)
<สคริปต์>
alert('$!msg');
</สคริปต์>
#จบ
สคริปต์ข้างต้นหมายความว่าเมื่อมีวัตถุข้อความวัตถุเนื้อหาต่อไปนี้เช่น <script> จะถูกส่งออก
3. #foreach( $info in $list) $info.someList #end วนซ้ำเพื่ออ่านอ็อบเจ็กต์ในรายการคอลเลกชันและประมวลผลตามนั้น
ตัวอย่างเช่น: สคริปต์เทมเพลตอินเทอร์เฟซ html สำหรับการแสดงหัวข้อยอดนิยมในหน้าแรกของฟอรัมของระบบฟอรัมโอเพ่นซอร์ส EasyJF (0.3):
#foreach( $ข้อมูลใน $hotList1)
<a href="/bbsdoc.ejf?easyJWebCommand=show&&cid=$!info.cid" target="_blank">$!info.title</a><br>
#จบ
สคริปต์ด้านบนระบุว่ามันวนซ้ำอ็อบเจ็กต์ในคอลเลกชัน hotList1 และส่งออกเนื้อหาที่เกี่ยวข้องของอ็อบเจ็กต์
4. #macro(macroName)#end เป็นการเรียกฟังก์ชันสคริปต์ (มาโคร) และไม่แนะนำให้ใช้อย่างกว้างขวางในเทมเพลตอินเทอร์เฟซ
ตัวอย่างเช่น: ในตัวอย่างของการเพิ่ม ลบ การแก้ไข และการสืบค้นที่สร้างขึ้นอย่างรวดเร็วโดยใช้ EasyJWeb Tools คุณสามารถคลิกที่แถบชื่อเรื่องของรายการเพื่อแสดงลำดับจากน้อยไปหามากและจากมากไปน้อย นี่คือเนื้อหาเทมเพลตที่เรามักเห็นในแอปพลิเคชัน EasyJWeb เพื่อแสดงสถานะการเรียงลำดับ
คำจำกัดความของฟังก์ชัน (มาโคร) มักจะวางไว้ก่อน
#มาโคร(orderPic $ประเภท)
#if ($orderField.equals($type))
<img src="http://VeVB.COm/ico/${orderType}.gif">
#จบ
#จบ
การเรียกที่เฉพาะเจาะจงคือ: <font color="#FFFFFF">title#orderPic("title")</font>
5. รวมไฟล์ #inclue("ชื่อไฟล์เทมเพลต") หรือ #parse("ชื่อไฟล์เทมเพลต")
ส่วนใหญ่จะใช้เพื่อจัดการกับหน้าที่มีเนื้อหาเหมือนกัน เช่น เนื้อหาด้านบนหรือด้านล่างของแต่ละเว็บไซต์
สำหรับวิธีการใช้งาน คุณสามารถดูแอปพลิเคชันได้ใน EasyJF Open Source Blog และ EasyJF Open Source Forum!
เช่น: #parse("/blog/top.html") หรือ #include("/blog/top.html")
ข้อแตกต่างระหว่างการแยกวิเคราะห์และการรวมคือ หากมีแท็กสคริปต์ Velocity ในไฟล์ที่รวมไว้ ก็จะถูกแยกวิเคราะห์เพิ่มเติม ในขณะที่การรวมจะแสดงตามที่เป็นอยู่
3.เกี่ยวกับการใช้ #set
ทางเลือกสุดท้าย อย่าประกาศตัวแปรสคริปต์ Velocity ด้วยตัวคุณเองในการดูหน้าเว็บ กล่าวคือ ใช้ #set ให้น้อยที่สุดเท่าที่จะเป็นไปได้ บางครั้งเราจำเป็นต้องแสดงหมายเลขซีเรียลบนเพจ แต่ออบเจ็กต์โปรแกรมไม่มีแอตทริบิวต์หมายเลขซีเรียลนี้ คุณสามารถกำหนดได้ด้วยตัวเอง ตัวอย่างเช่น ในระบบไซคลิกจะเป็นดังนี้:
#set ($i=0)
#foreach($ข้อมูลใน $list)
หมายเลขซีเรียล:$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 Identifier (a .. z หรือ A .. Z)
ตัวแปรสามารถมีอักขระต่อไปนี้:
ตัวอักษร (ก .. z, A .. Z)
ตัวเลข (0 .. 9)
ยัติภังค์ ("-")
ขีดล่าง ("_")
4.คุณสมบัติ
$ตัวระบุตัวระบุ
$user.name
ค่าชื่อในผู้ใช้ hashtable คล้ายกัน: user.get("name")
5. วิธีการ
วัตถุ user.getName() = $user.getName()
6.สัญกรณ์อ้างอิงอย่างเป็นทางการ
ใช้ {} เพื่อแยกชื่อตัวแปรออกจากสตริง
ชอบ
#set ($ผู้ใช้ = "csy"}
${ชื่อผู้ใช้}ชื่อ
กลับไซเนม
$ชื่อผู้ใช้
$!ชื่อผู้ใช้
ความแตกต่างระหว่าง $ และ $!
เมื่อไม่พบชื่อผู้ใช้ $username จะส่งคืนสตริง "$username" และ $!username จะส่งคืนสตริงว่าง ""
7. เครื่องหมายคำพูดคู่และเครื่องหมายคำพูด
#set ($var = "เฮโล")
test"$var" ส่งคืน testhello
test'$var' ส่งคืน test'$var'
คุณสามารถเปลี่ยนวิธีการประมวลผลเริ่มต้นได้โดยตั้งค่า stringliterals.interpolate=false
8. คำสั่งแบบมีเงื่อนไข
คัดลอกรหัสรหัส ดังต่อไปนี้:
#if( $foo )
<strong>ความเร็ว!</strong>
#จบ
#if($foo)
#เอลเซอิฟ()
#อื่น
#จบ
ดำเนินการเมื่อ $foo เป็นโมฆะหรือค่าเท็จของวัตถุบูลีน
9. ตัวดำเนินการเชิงตรรกะ: == && || !
10. คำสั่ง Loop #foreach($var in $arrays) //คอลเลกชันประกอบด้วย Vector, Hashtable หรือ Array สามประเภทดังต่อไปนี้
#จบ
#foreach( $ผลิตภัณฑ์ใน $allProducts )
<li>$ผลิตภัณฑ์</li>
#จบ
#foreach( $key ใน $allProducts.keySet() )
<li>คีย์: $key -> ค่า: $allProducts.get($key)</li>
#จบ
#foreach( $ลูกค้าใน $customerList )
<tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#จบ
11. ตัวแปร velocityCount ถูกกำหนดไว้ในไฟล์การกำหนดค่า
คัดลอกรหัสรหัส ดังต่อไปนี้:
# ชื่อเริ่มต้นของตัวนับลูป
#การอ้างอิงตัวแปร
directive.foreach.counter.name = velocityCount
# ค่าเริ่มต้นเริ่มต้นของการวนซ้ำ
#การอ้างอิงตัวแปรตัวนับ
directive.foreach.counter.initial.value = 1
12. รวมไฟล์
#include( "one.gif", "two.txt", "three.htm" )
13. แยกวิเคราะห์สคริปต์นำเข้า
#parse("me.vm")
14. #stop หยุดการดำเนินการและการส่งคืน
15. กำหนดมาโคร Velocimacros ซึ่งเทียบเท่ากับการสนับสนุนฟังก์ชันรวมถึงฟังก์ชันต่างๆ
#มาโคร(ง)
<tr><td></td></tr>
#จบ
เรียก
#ง()
16. มาโครพร้อมพารามิเตอร์
คัดลอกรหัสรหัส ดังต่อไปนี้:
#macro( แถวตาราง $สี $บางรายการ )
#foreach( $บางอย่างใน $somelist )
<tr><td bgcolor=$color>$บางอย่าง</td></tr>
#จบ
#จบ
17. ผู้ดำเนินการช่วง
#foreach( $foo ใน [1..5] )