アプリケーション全体で指定する
画面表示時にデータのフォーマットを行いたい場合、ApplicationクラスのnewConverterLocatorメソッドをオーバーライドして、IConverterクラスを詰めたConverterLocatorを作成して返却するようにする。
1 2 3 4 5 6 7 8 9 |
@Override protected IConverterLocator newConverterLocator() { ConverterLocator converterLocator = new ConverterLocator(); IConverter converter = new PatternDateConverter("yyyy/MM/dd HH:mm:ss", true); converterLocator.set(Date.class, converter); return converterLocator; } |
上記の例では、このアプリケーション内の全てのDate型のデータは「yyyy/MM/dd HH:mm:ss」というフォーマットで出力されるようになる。ちなみに上記で使用しているPatternDateConverterを使うにはwicket-datetimeライブラリが必要なので注意。
項目毎に指定する
全体的に適用するのではなく、特定の項目でのみフォーマットを変更したい場合は、対象コンポーネントのgetConverter(Class)
をオーバーライドして、自力でIConverterを返すようにすればできる。
1 2 3 4 5 6 7 8 |
Label label = new Label("label", new PropertyModel(this, "date")) { @Override public IConverter getConverter(Class type) { return new PatternDateConverter("yyyy'年'MM'月'dd'日'", true); } }; add(label); |
(もっと簡単なやり方があるのかどうかは不明)