[Seasar-user:16566] Re: [Teeda]Calendar型にTDateTimeConverterを指定するとエラーになります

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 12月 30日 (火) 00:00:40 JST


小林 (koichik) です.

Date:    Sun, 28 Dec 2008 04:20:07 +0900
From:    "Ryo Ikeda" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16563] [Teeda]Calendar型にTDateTimeConverterを指定するとエラーになります

>     @DateTimeConverter(pattern = "yyyy/MM/dd")
>     public Calendar calendar;
> 
> TeedaにてPageクラスにCalendarのフィールドを作り、
> TDateTimeConverterアノテーションを指定すると、
> 文字列 → Calendar型 の変換は成功するのですが、
> Calendar型 → 文字列 の変換でエラーが発生します。
> (ログを添付いたします。)
> 
> PageクラスではDate型で宣言しないとまずいでしょうか?

JSF 仕様の DateTimeConverter は文字列と java.util.Date
およびそのサブクラスとの相互変換のみサポートしていて,
Calendar との変換は対象になっていないようです.

http://java.sun.com/javaee/5/docs/api/javax/faces/convert/DateTimeConverter.html

The getAsString() method expects a value of type java.util.Date (or a subclass)

元々 java.text.DateFormat が Calendar をサポート
していないせいかも.

> http://teeda.seasar.org/ja/extension/reverse/convert.html
> 
> Teeda 逆引きリファレンスにて、「java.util.Calendar  や  java.sql.Date,
> java.sql.Time,java.sql.Timestamp  型のプロパティに設定する事ができます」
> とあるため、疑問に思いました。

なので,これはドキュメントのバグ臭いのですが,
String -> Calendar ができるのに非対称なのも
変なので Teeda 独自の TDateTimeConverter のみ
サポートしました.
# @DateTimeConverter アノテーションを指定すると 
# TDateTimeConverter が使われます.

SNAPSHOT をデプロイしたのでご確認ください.

http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-core/1.0.13-sp5-SNAPSHOT/teeda-core-1.0.13-sp5-20081229.144312-1.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-extension/1.0.13-sp5-SNAPSHOT/teeda-extension-1.0.13-sp5-20081229.144312-1.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-ajax/1.0.13-sp5-SNAPSHOT/teeda-ajax-1.0.13-sp5-20081229.144312-1.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-tiger/1.0.13-sp5-SNAPSHOT/teeda-tiger-1.0.13-sp5-20081229.144639-1.jar


> また、定数アノテーションの方では、
> 
> > public static final String date_TDateTimeConverter = "pattern='yyyy/MM/dd'";
> > public BigDecimal date;
> 
> とBigDecimal型になっておりますが、これはDate型の間違いでしょうか?

ご指摘ありがとうございます.
後で [TEEDA-492] とまとめて直しておきます.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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