最近项目一直用veloctiy作为前端模板,velocity还算简单易学,但是今天在用到减法运算是我蛋疼了。看例子:
1、example1.vm
<html > #set($a=10) <span>$a-1</span> ------------ 输出为:$a-1 ------------ </html>
这个输出还可以理解,velocity把a-1当做一个变量,所有没有取到值,好看example2
2、example2.vm
<html > #set($a=10) ------------ <span>${a}-1</span> 输出为:10-1 ------------ </html>
这个输出也可以理解,这是在html里,velocity不会把${a}-1当一个整体,好看example3
3、example3.vm
<html > #set($a=10) #set($b=$a-1) ------------ <span>$b</span> 这个输出应该是9吧,可输出为:$b ------------ </html>
这我就不能淡定了,我不解,google,百度了一下,要想进行减法运算,必须在减号两边加空格。哦,不加空客velocity
又把a-1当成一个变量了,看example4。
4、example4.vm
<html > #set($a=10) #set($b=$a - 1) ------------ <span>$b</span> ------------ </html>
这个输出结果为9,哦原来如此,可是看example5。
5、example5.vm
<html > #set($a=3) #set($s=["中国","日本","美国"]) ------------ 我要得到s数值里的第三个元素,我是这样写滴 <span>$s.get($a - 1)</span> ------------ </html>
我期待输出结果是"美国",可是velocity后台出异常了,我蛋疼了,看example6。
6、example6.vm
<html > ##令人蛋疼的velocity减法运算 #set($a=3) #set($s=["中国","日本","美国"]) ------------ 我想到了example4,我这样写 #set($b=$a - 1) <span>$s.get($b)</span> 输出为:"美国" ------------ </html>
原来在velocity里变量可以是字符(a、b...)、数值(1、2..)、下划线(_)、中划线(-),
但example5里那种写法get($a - 1),为什么报错,还在郁闷中。
freemarker要比veloctiy确实强大了很多,在freemarker里面这样写就行了
<#assign d=4> ${d-1}