【发布时间】:2018-10-25 15:29:45
【问题描述】:
我必须在速度模板引擎中增加一个数字。
#set ($newIndex = $oldIndex+ 1)
$newIndex
但我得到的结果不正确,例如,如果 $oldIndex 的值为 1,那么我得到的是 11 而不是 2
【问题讨论】:
-
oldIndex是如何定义的?
标签: velocity
我必须在速度模板引擎中增加一个数字。
#set ($newIndex = $oldIndex+ 1)
$newIndex
但我得到的结果不正确,例如,如果 $oldIndex 的值为 1,那么我得到的是 11 而不是 2
【问题讨论】:
oldIndex 是如何定义的?
标签: velocity
假设oldIndex定义为一个数字,它似乎类似于substraction not working
您的示例未正确复制。如果标识符旁边有一个破折号,它就成为标识符的一部分。所以这个例子会失败,因为“-”符号实际上是 Total2 标识符的一部分。
变量名后加空格:
#set ($newIndex = $oldIndex + 1)
【讨论】:
在这种情况下它与空格无关,而是与 $oldIndex 的初始内容有关。
以下模板:
#set ($i = '1')
#set ($i = $i + 1)
$i.class.name / $i
#set ($j = 1)
#set ($j = $j + 1)
$j.class.name / $j
显示:
11 / java.lang.String
2 / java.lang.Integer
因此,您需要将$oldIndex 转换为数字,但执行此操作的方法取决于您在上下文中可用的工具(如果您不能将$oldIndex 作为数字放在上下文中首先)。例如,如果您的上下文中存在 NumberTool,您通常会执行 #set ($oldIndex = $number.toNumber($oldIndex)) 之类的操作。
有一种方法可能适用于所有环境:
#set ($dummy = 1) ## creates an Integer variable
#set ($oldIndex = $dummy.valueOf($oldIndex)) ## uses Integer.valueOf() method
就是这样,$oldIndex 包含一个整数!请注意,如果给定的不是数字表示,Integer.valueOf() 方法可能会抛出 NumberFormatException。
【讨论】: