[Seasar-user:12444] Re: [S2Container][Beans] Beansでの日付・時刻の変換

YASUO HIGA [E-MAIL ADDRESS DELETED]
2008年 1月 10日 (木) 17:41:52 JST


ひがです。

> ふたがわです。
> > 
> > dateFormat(String patter, String... propertyNames)
> > のようなメソッドを追加して、
> > Beans.copy(src, dest).dateFormat("yyyy/MM/dd HH:mm:ss.S").execute()
> > のようにすると、すべてのDate型のフィールドに適用し、
> > 
> > Beans.copy(src, dest)
> >   .dateFormat("yyyy/MM/dd HH:mm:ss.S", "aaa", "bbb").execute()
> > 
> > みたいにすると、aaa、bbbのプロパティのみパターンが適用されるように
> > しましょうか。
> 
> ご回答ありがとうございます。
> dateFormat(String patter, String... propertyNames)、良いと思います。
> 
他に反対がなさそうなら入れておきます。

> ついでになってしまいますが、S2Dxoにあるプロパティ名の変換ルールのような
> 仕組みもあると嬉しいと思います。conversionRule()とかrule()とか。
> 
> やりたいことはS2JDBCでのMapを使ったSimpleWhereを
> Beansだけで作りたいです。
> 
> # 利用イメージ
> Map<String, Object> search = new HashMap<String, Object>();
> Beans.copy(this, search)
> 	.rule("jobType : jobType_IN")
> 	.rule("salary : salary_LE")
> 	.excludesNull()
> 	.execute();

こっちはあんまり賛成できません。
なぜなら、文字列で"jobType : jobType_IN"のように指定するより、
execute()の後に、map.put("jobType_IN", this.jobType);
みたいにJavaのコードで書いたほうが、jobTypeの部分は
コード補完が聞くし、タイプセーフです。

それよりも、検索条件用のフィールドは、他のフィールドと
一目でわかるようになっていたほうがいいので、

public String search_xxx;
public String[] search_jobType_IN;
public String search_salary_LE;

のようにプレフィックスをつけておいて、

Beans.copy(this, search)
.prefix("search")
.excludesNull()
.execute();

のようにするほうが、思わぬやつがコピーされないので安全です。
コピー先がJavaBeansだと予期せぬものはコピーされませんが、
コピー先がMapだとすべてコピーされるので危険なのと
いちいちexcludes()ではじくのも面倒なので。


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