[Seasar-user:8593] Re: [Teeda]出力時のフォーマットの指定方法について

松崎美姫 [E-MAIL ADDRESS DELETED]
2007年 6月 22日 (金) 15:53:36 JST


いつもお世話になっております。
松崎美姫です。

> フォーマットの件を考えている内に
> propertiesの値にコンバートする機能は
> できないものかを考えてました。
>
> @XXXX("{0}〜{1}")
> public String setXXXXXX(String[] ary){
>
> }

私も上記のような指定ができると、楽に統一ができるので、
非常に嬉しいですね。
結構、プロジェクトにより書式もそうですが、
文字列のフォーマットもまちまちですよね。
期間を表示する際には、 2000/01/01 - 2007/01/01で
あったり、2000/01/01 〜 2007/01/01 であったり、
多種だと思います。こういったフォーマットが気軽に
定義できるとありがたいですね。

あと、ひがさんからのアドバイスでありました、Converterですが、
デフォルトのConverterの、CharacterConverterを利用しようと考えているのですが、
Tigerを入れても、拡張のConvertenはアノテーション箇所のコードアシストには
でてくるのですが、CharacterConverterなどは、コードアシストに表示
されません。

CharacterConverterなどを使うにはポイントがあるのでしょうか?


 松崎美姫


> 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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



Seasar-user メーリングリストの案内