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?
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());
#set($String = "abc")
$String.format("%.2f", $val)
$val
doit être Double ou Float dans ce cas ...
Utilisez l’outil MathTool du projet VelocityTools.
$math.roundTo(2, $val)
formatCurrency (valeur de $). C'est un bon code de vélocité Java pour formater un nombre au format monétaire.
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.
$ numberTool.format ("# 0.00", $ val)