Как отформатировать числа в шаблонах скорости? - PullRequest
13 голосов
/ 11 января 2012

Я получаю Java-объект в моем шаблоне скорости. У объекта есть двойное значение, которое я хочу отформатировать до 2 десятичных знаков и отобразить в моем шаблоне.

Класс, для которого я получаю объект, выглядит примерно так

Class Price
{
double value;
String currency;
}

В моем шаблоне скорости я получаю значение, подобное этому

$price.value

но мне нужно отформатировать его до 2 десятичных знаков перед его отображением.

Я хочу конвертировать

23,59004–23,59

35,7 - 35,70

3,0 до 3,00

9 до 9,00

Подскажите пожалуйста, как мне это сделать в шаблоне скорости? Я много искал для этого и обнаружил, что могу использовать инструменты скорости, но нет примеров, связанных с этим? и могу ли я использовать инструменты скорости в шаблонах?

Ответы [ 6 ]

24 голосов
/ 11 января 2012

Инструменты Velocity будут использоваться в шаблонах Velocity;по сути, они являются объектами, добавляемыми к переменным, доступным в шаблоне, так что вы можете использовать $numberTool.format("#0.00", $val) или подобное.Если ни один из доступных инструментов не соответствует вашим потребностям, просто создайте POJO и добавьте его в шаблон.

Чтобы он работал, вы также должны добавить следующую зависимость maven:

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-tools</artifactId>
    <version>2.0</version>
</dependency>

и напишите следующий код:

context.put("numberTool", new NumberTool());
20 голосов
/ 13 декабря 2013
#set($String = "abc")
$String.format("%.2f", $val)

$val должно быть Double или Float в этом случае ...

2 голосов
/ 27 ноября 2015

Используйте MathTool из проекта VelocityTools.

$math.roundTo(2, $val)
1 голос
/ 11 марта 2013

FormatCurrency ($ значение). Это хороший код скорости Java для форматирования числа в формат валюты.

0 голосов
/ 05 июня 2014

Лучший способ сделать что-то помимо использования $numberTool.format - это использовать один из классов инструментов на основе MessageFormat, который делает больше, чем просто числа. Например, мы используем MessageTool, который специфичен для Struts, но вместо этого вы можете использовать что-то похожее на ResourceTool:

resources.properties
some.key=The price is currently {0,number,$#.##}

template.vm
<p>
  $msg.get('some.key', 'resources', [$price])
</p>

Таким образом, вы получаете номер в контексте, а не только сам по себе. В неанглийском языке число может быть более подходящим, чтобы прийти слева от текста, или в середине, или как угодно. Это дает вам гораздо больше гибкости, чем простое форматирование числа.

0 голосов
/ 13 января 2013

$ numberTool.format ("# 0.00", $ val)

...