[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 メーリングリストの案内