3

フリーマーカーファイルに表示したい2つの数字があります。

  • 基準long id

  • 基準long timeSpend

idはデフォルトのNumberFormatインスタンスを使用する必要がありますが、timeSpendは私のMillisecondsSpendNumberFormatインスタンスを使用する必要があるため、出力には次のようなものが表示されます。

  • id:1 234 567

  • timeSpend:1min 23sec 456ms

NumberFormatインスタンスを1つのインスタンスに使用しますが、すべてのインスタンスに使用するのlongではありませんか?

4

2 に答える 2

4

フォーマッターインスタンスをFreemarkerテンプレートに渡して(テンプレートに渡されるオブジェクトを含むモデルに追加し)、そのformat()メソッドを明示的に呼び出して数値をフォーマットすることができます。

何かのようなもの

timeSpend: ${myCustomFormatter.format(timeSpend)}
于 2012-05-14T09:34:29.230 に答える
1

を使用${someNumber?string("somePattern")}して、デフォルト以外の形式を1回だけ使用できます。ただし、実際の問題は、FreeMarkerが常にDecimalFormat数値の書式設定に使用し、パターンのみを指定できることです。MillisecondsSpendNumberFormatしたがって、手動で呼び出さない限り、使用することはできません。これを行うには、MillisecondsSpendNumberFormatインスタンスをデータモデルに配置し、テンプレートからJava APIを呼び出すか、TemplateMethodModelEx内部でフォーマットを行うaを実装してから、で一般的な#include-d/ #import-dファイルにプルして<#assign formatTimeSpent = "com.example.MyTimeSpentFormatter"?new()>から使用${formatTimeSpent(someNumber)}します。テンプレート。

于 2012-05-15T07:01:17.473 に答える