Как преобразовать строку в целое число в шаблоне скорости? - PullRequest
34 голосов
/ 28 января 2010

У меня есть файл шаблона скорости, который содержит данные из xml. Я хочу преобразовать строку в целочисленный тип.

Как я могу это сделать?

Ответы [ 3 ]

79 голосов
/ 28 января 2010

Aha! Был там.

#set($intString = "9")
#set($Integer = 0)
$Integer.parseInt($intString)

Для этого используется скорость, лежащая в основе Java. Переменная $ Integer - это не более чем объект Java Integer, который вы затем можете использовать для доступа .parseInt

Редактировать: Приведенный выше код для демонстрации. Конечно, есть способы оптимизировать его.

9 голосов
/ 12 июля 2013

Если у вас есть некоторый контроль над контекстом скорости, вот альтернатива, которая устраняет необходимость устанавливать переменную в шаблоне Velocity.

Context velocityContext = new Context();
velocityContext.put(Integer.class.getSimpleName(), Integer.class);

Это позволяет вам вызывать статические методы java.lang.Integer в вашем шаблоне, используя $Integer.parseInt($value), и не полагается на то, что #set был вызван до выполнения преобразования типа в шаблоне.

0 голосов
/ 19 марта 2018

Проблема с parseInt состоит в том, что она выдает исключение в случае, если строка не разбирается.Если в ваш контекст загружен NumberTool , лучшим решением, чем parseInt, является следующее:

#set($intString = "009")
#set($Integer=$numberTool.toNumber($intString).intValue())

#if($Integer)
 ## ok
#else
 ## nok
#end

Иногда NumberTool также загружается как $number.

Однако небольшой недостаток заключается в том, что NumberTool просто анализирует первое найденное число и игнорирует остальные, поэтому «123a» => 123.

...