ベロシティテンプレートにJavaオブジェクトが表示されます。オブジェクトには、小数点以下2桁にフォーマットしてテンプレートに表示したいdouble値があります。
オブジェクトを取得しているクラスは次のようなものです
Class Price
{
double value;
String currency;
}
私の速度テンプレートでは、このような値を取得しています
$price.value
表示する前に小数点以下2桁にフォーマットする必要があります。
変換したい
23.59004から23.59
35.7から35.70
3.0から3.00
9から9.00
速度テンプレートでどのように実行できるか教えてください。これをたくさん検索したところ、ベロシティツールを使用できることがわかりましたが、それに関連する例はありませんか?テンプレートでベロシティツールを使用できますか?
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());
#set($String = "abc")
$String.format("%.2f", $val)
$val
この場合、DoubleまたはFloatである必要があります...
VelocityToolsプロジェクトのMathToolを使用します。
$math.roundTo(2, $val)
formatCurrency($ value)。これは良いJava数値を通貨形式にフォーマットする速度コードです。
$numberTool.format
を使用する以外に、より良い方法は、数値だけではないMessageFormat
ベースのツールクラスの1つを使用することです。たとえば、Struts固有のMessageTool
を使用しますが、代わりにResourceTool
のような類似のものを使用できます。
resources.properties
some.key=The price is currently {0,number,$#.##}
template.vm
<p>
$msg.get('some.key', 'resources', [$price])
</p>
このようにして、それ自体だけでなく、状況に応じた数を取得します。英語以外の言語では、数字はテキストの左側、中央、またはその他に来る方が適切かもしれません。これにより、単純に数値を単独でフォーマットするよりもはるかに柔軟になります。
$ numberTool.format( "#0.00"、$ val)