[Seasar-user:8577] Re: [Teeda]出力時のフォーマットの指定方法について
山下 真里
[E-MAIL ADDRESS DELETED]
2007年 6月 22日 (金) 08:38:44 JST
山下真里です。
小林さん、早速の回答、誠にありがとうございます。
独自のコンバータという機能になるんですね。
早速、利用させていただこうと思いました。
フォーマットの件を考えている内に
propertiesの値にコンバートする機能は
できないものかを考えてました。
@XXXX("{0}〜{1}")
public String setXXXXXX(String[] ary){
}
propertiesファイルで利用するような文書(例 {0}は{1}です。)の出力を
便利にする機能が手軽にできれば、非常にありがたいですね。
----- Original Message -----
送信者: Koichi Kobayashi<[E-MAIL ADDRESS DELETED]>
宛先: [E-MAIL ADDRESS DELETED]
日付:Thursday, June, 21, 2007, 11:00 PM
件名: [Seasar-user:8571] Re:[Teeda]出力時のフォーマットの指定方法について
>
>
> 小林 (koichik) です.
>
> Date: 21 Jun 2007 21:52:22 +0900
> From: 山下 真里 <[E-MAIL ADDRESS DELETED]>
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:8568] [Teeda]出力時のフォーマットの指定方法について
>
> > 1.私が思ったのは、S2Dxoから相互変換をする際に指定したフォーマットで
> > 変換する方法があるのか?
>
> あります.
> S2Dxo のドキュメント「独自のコンバータ」に
> 記述するつもりなのですが,いつまでたっても
> 「工事中」のままでご迷惑おかけしてます.m(__)m
>
> S2Dxo では独自のコンバータを作成して
> 変換先のプロパティごとに指定することができます.
>
> S2Dxo 用のコンバータは
> org.seasar.extension.dxo.converter.Converter
> を実装したクラスとして作成します.
> 例えば
>
> public class NumberFormatDxoConverter implements Converter {
> private String format;
>
> public NumberFormatConverter() {
> }
> public void setFormat(String format) {
> this.format = format
> }
> public Class[] getSourceClasses() {
> return new Class[] {Number.class}; //変換元として受け入れ可能なクラス
> }
> public Class getDestClass() {
> return String.class; //変換先のクラス
> }
> public Object convert(Object source, Class destClass, ConversionContext context) {
> DecimalFormat formatter = new DecimalFormat(format);
> return formatter.format(((Number) source).longValue()); //固有の変換処理
> }
> public void convert(Object source, Object dest, ConversionContext context) {
> throw new UnsupportedOperationException();
> }
> }
>
> のようなコンバータを作成します.
> クラス名の最後は必ず DxoConverter にしてください.
> パッケージは <ルートパッケージ>.converter です.
> Teeda のパッケージと同じになるのが気になる場合は
> ルートパッケージを別にしてください.
>
> このコンバータを指定するためのアノテーションを作成します.
> # 定数アノテーションのみ使うなら不要.
>
> @Retention(RetentionPolicy.RUNTIME)
> @Target(ElementType.METHOD)
> @DxoConverter("numberFormatDxoConverter")
> public @interface NumberFormatDxoConverter {
> String format() default "#,##9";
> }
>
> @DxoConverter はメタアノテーションで,
> コンバータのコンポーネント名を指定します.
> # ちょっと冗長ですね.省略時はアノテーションの
> # クラス名からとるようにすればよかったかも.
>
> そして変換先 JavaBeans (Page クラス) の
> プロパティの setter メソッドに
>
> public class FooPage {
>
> @NumberFormatDxoConverter
> public void setSomeNumber(String formattedNumber) {
> ...
> }
> }
>
> のように指定することで,数値をフォーマットした
> 文字列に変換することができます.
>
> 定数アノテーションの場合は
>
> public static final String someNumber_numberFormatDxoConverter = "format='#,##9'";
>
> のようになります.
>
> いずれもメーラで書いただけで試していません.m(__)m
> 概ねこんな感じでいけると思います.
>
>
>
> --
> <signature>
> <name>Koichi Kobayashi</name>
> <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
> </signature>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内