【问题标题】:Addition in velocity template engine速度模板引擎中的添加
【发布时间】:2018-10-25 15:29:45
【问题描述】:

我必须在速度模板引擎中增加一个数字。

#set ($newIndex = $oldIndex+ 1)
 $newIndex

但我得到的结果不正确,例如,如果 $oldIndex 的值为 1,那么我得到的是 11 而不是 2

【问题讨论】:

  • oldIndex 是如何定义的?

标签: velocity


【解决方案1】:

假设oldIndex定义为一个数字,它似乎类似于substraction not working

您的示例未正确复制。如果标识符旁边有一个破折号,它就成为标识符的一部分。所以这个例子会失败,因为“-”符号实际上是 Total2 标识符的一部分。

变量名后加空格:

#set ($newIndex = $oldIndex + 1)

【讨论】:

    【解决方案2】:

    在这种情况下它与空格无关,而是与 $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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多