web-dev-qa-db-fra.com

Comment formater les nombres dans les modèles de vélocité?

Je reçois un objet Java dans mon modèle de vélocité. L'objet a une double valeur que je souhaite formater à 2 décimales et l'afficher dans mon modèle.

La classe pour laquelle obtenir un objet ressemble à ceci

Class Price
{
double value;
String currency;
}

Dans mon modèle de vélocité, j'obtiens la valeur suivante

$price.value

mais je dois le formater à 2 décimales avant de l'afficher.

Je veux convertir

23.59004 à 23.59

35,7 à 35,70

3,0 à 3,00

9h à 9h

S'il vous plaît dites-moi comment puis-je le faire dans le modèle de vélocité? J'ai beaucoup cherché et trouvé que je pouvais utiliser des outils de vélocité, mais il n'y a pas d'exemples connexes. et puis-je utiliser des outils de vélocité dans des modèles?

13
Rajesh Pantula

Les outils Velocity devraient être utilisés dans les modèles Velocity. il s’agit essentiellement d’objets ajoutés aux variables disponibles dans un modèle afin que vous puissiez utiliser $numberTool.format("#0.00", $val) ou similaire. Si aucun des outils disponibles ne correspond à vos besoins, créez simplement un POJO et ajoutez-le au modèle.

Pour que cela fonctionne, vous devez également ajouter la dépendance maven suivante:

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

et écrivez le code suivant:

context.put("numberTool", new NumberTool());
24
Tassos Bassoukos
#set($String = "abc")
$String.format("%.2f", $val)

$val doit être Double ou Float dans ce cas ...

18
dedek

Utilisez l’outil MathTool du projet VelocityTools.

$math.roundTo(2, $val)
2
abahet

formatCurrency (valeur de $). C'est un bon code de vélocité Java pour formater un nombre au format monétaire.

1
user2157025

Une meilleure façon de faire des choses en plus d'utiliser $numberTool.format consiste à utiliser l'une des classes d'outils MessageFormat basées sur __ qui font plus que des nombres. Par exemple, nous utilisons MessageTool qui est spécifique à Struts, mais vous pouvez utiliser quelque chose de similaire comme ResourceTool à la place:

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

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

De cette façon, vous obtenez le nombre dans son contexte et pas seulement tout seul. Dans une langue autre que l'anglais, le numéro pourrait être plus approprié pour apparaître à gauche du texte, au milieu ou autre. Cela vous donne beaucoup plus de flexibilité que de simplement formater le nombre tout seul.

0

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

0
Rafael Sanches