转自http://liu400liu.iteye.com/blog/1197466
最近项目一直用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}