Дополнение в скоростном шаблоне движка - PullRequest
0 голосов
/ 23 октября 2018

Мне нужно увеличить число в шаблоне скорости.

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

, но я получаю неверный результат, например, если значение $ oldIndex равно 1, тогда я получаю 11 вместо 2

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Это не имеет ничего общего с пробелами в этом случае, а скорее с начальным содержимым $ 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 как число вконтекст в первую очередь).Например, вы обычно делаете что-то вроде #set ($oldIndex = $number.toNumber($oldIndex)), если в вашем контексте присутствует NumberTool.

Существует метод, который, вероятно, будет работать во всех средах:

#set ($dummy = 1)                            ## creates an Integer variable
#set ($oldIndex = $dummy.valueOf($oldIndex)) ## uses Integer.valueOf() method

И этоэто, $oldIndex содержит целое число!Обратите внимание, что метод Integer.valueOf() может выдать NumberFormatException, если ему дано нечто иное, чем представление числа.

0 голосов
/ 24 октября 2018

Предполагая, что oldIndex определено как число, оно похоже на вычитание не работает

Ваш пример скопирован неправильно.Если черта находится рядом с идентификатором, она становится частью идентификатора.Таким образом, этот пример потерпит неудачу, поскольку знак «-» фактически является частью идентификатора Total2.

Добавление пробела после имени переменной:

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