Подтвердить что ты не робот

Как отформатировать номера в шаблонах скорости?

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

Класс, для которого im получает объект, похож на этот

Class Price
{
double value;
String currency;
}

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

$price.value

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

Я хочу преобразовать

23.59004 до 23.59

35,7 до 35,70

От 3,0 до 3,00

от 9 до 9.00

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

4b9b3361

Ответ 1

Ожидается, что инструменты 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());

Ответ 2

#set($String = "abc")
$String.format("%.2f", $val)

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

Ответ 3

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

$math.roundTo(2, $val)

Ответ 4

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

Ответ 5

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

Ответ 6

Лучший способ сделать что-то помимо использования $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>

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