[Seasar-user:15142] Re: Beans.createAndCopy 機能で、独自のConverterを使うことはできますか?

Masaru Ono [E-MAIL ADDRESS DELETED]
2008年 7月 24日 (木) 13:57:43 JST


ひが殿

お疲れ様です。
尾野です。

createAndCopyのメソッドの後に、converterメソッドが記述できることを気づかずに、
四苦八苦しておりました^^;

以下のような実装で、java.sql.Timestamp型をyyyyMMddのStringに変換できるようになりました。
ありがとうございます。


Beans.copy(entity, form).converter(new TimestampConverter()).execute();


public class TimestampConverter implements Converter {
	
	public TimestampConverter() {
		this("yyyyMMdd");
	}

	// public TimestampConverter(String pattern) {
	private TimestampConverter(String pattern) {
	if (StringUtil.isEmpty(pattern)) {
			throw new EmptyRuntimeException("pattern");
		} else {
			this.pattern = pattern;
			return;
		}
	}
	
	public Object getAsObject(String value) {
		if (StringUtil.isEmpty(value))
			return null;
		else
			return DateConversionUtil.toDate(value, pattern);
	}
	
	public String getAsString(Object value) {
		return StringConversionUtil.toString((Date) value, pattern);
	}
	
	public boolean isTarget(Class clazz) {
		return clazz == (java.sql.Timestamp.class);
	}
	
	protected String pattern;
}



>ひがです。
>> 
>> > いつもお世話になっております。
>> > 尾野です。
>> > 
>> > 現在、EntityをFormにマッピングする際に、
>> > java.sql.Timestamp があると、Beans.createAndCopy実行後に、個別にマッピングする処理が記述しています。
>> > 
>> > BeanUtilsのように、独自のConvertorを登録する(利用する)方法があればぜひ教えてください。
>> > 
>> http://s2container.seasar.org/2.4/ja/beans.html#converter
>> を参照してください。
>http://s2container.seasar.org/2.4/ja/beans.html#dateConverter
>を使えばさらに簡単に記述できます。
>
>S2BeanUtilsは流れるようなインターフェースを採用しているので、
>IDEのコードアシストで何ができるか大体わかりますよ。
>_______________________________________________
>Seasar-user mailing list
>[E-MAIL ADDRESS DELETED]
>https://ml.seasar.org/mailman/listinfo/seasar-user
>



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