2017-10-18 23 views
0

せずに通貨形式を使用する私が持っている:、唯一のことは、それが通貨記号(ドル記号)Iドンが含まれていることをどの通貨記号やドル記号

すべてうまく私のBigDecimalをフォーマット
${amount?string.currency} 

です欲しい。 string["0.##"]を使用して数値形式を明示的に指定せずにこれを無効にするにはどうすればよいですか?

答えて

2

(2.3.27)?string.currencyが常に用意されているデフォルトの通貨フォーマットを意味参照してください。 Javaによる。したがって、これを変更する代わりに、カスタムフォーマットを定義して[email protected]currencyはフォーマットに指定した名前に過ぎません)のように使用できます。

カスタムフォーマットはJavaで定義されています。 (http://freemarker.org/docs/pgui_config_custom_formats.html#pgui_config_custom_formats_ex_alias)マニュアルから:

// Where you initalize the application-wide Configuration singleton: 
Configuration cfg = ...; 

Map<String, TemplateNumberFormatFactory> customNumberFormats = new HashMap<>(); 
customNumberFormats.put("price", 
     new AliasTemplateNumberFormatFactory(",000.00")); 
customNumberFormats.put("weight", 
     new AliasTemplateNumberFormatFactory("0.##;; roundingMode=halfUp")); 
cfg.setCustomNumberFormats(customNumberFormats); 

して、テンプレートに:

${[email protected]} 
${[email protected]} 
1

あなただけ

${amount?string["0.##"]} 

またはnumber_formatを設定し、フォーマットを使用したい場合:

<#setting number_format="0.##"> 

は、すべてのFreeMarkerの現在formats options

+0

私はおそらくより特定してきたはずですが、私は基本的にドル記号なしstring.currencyを使用する方法を求めています。表示されたメソッドは機能しますが、数字の書式設定について知る必要はなく、通貨だけを入力することができるという点で、ユーザーにとっては簡単にしています。小さな違いですが、内部テストでは一部の人が理解するのがはるかに容易であることがわかりました;)正解であるため、私はあなたを支持しました。 –

+0

https://stackoverflow.com/questions/8658205/format-currency-without-currency-symbol – user7294900

+0

私はそれを見ていましたが、メモリ内のNumberFormatのインスタンスを変更する方法ですが、実際にFreeMarkerには適用されません。あなたはテンプレートファイルからインスタンスへのアクセス権を持っていません... –

関連する問題