[Seasar-user:19073] Re: 【Teeda】グリッドのカレンダー対応不備

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 12月 25日 (金) 22:00:00 JST


小林 (koichik) です.

Date:    Fri, 25 Dec 2009 20:20:55 +0800
From:    徐 XX <[E-MAIL ADDRESS DELETED]>
To:      <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:19072] Re: 【Teeda】グリッドのカレンダー対応不備

> 詳しいことを説明します。(ソースコードを提供できませんので、ご理解を)

実際のアプリケーションではなく,

「サンプル」

の HTML およびページクラスを提供してもらえないでしょうか.

> ■再現前提
> 1、TDateTimeConverterを継承して、別のデートタイムコンバーターAを作る
> 2、画面の編集できるグリッド項目(HTMLにてT_popupCalendarで定義してる)にコンバーターAを使って、デートタイムの変換を行う
> 3、変換のタイミング(コンバートのtarget)は「登録」だけ、「戻る」の時は変換しない
>  
> ■再現手順
> 1、2行以上のデータが画面にて表示されてる
> 2、1行目のデートタイム項目を「asd」を入れて、「戻る」ボタンを押して、無事に前画面に戻った
> 3、2行目のデートタイム項目を「asd」を入れて、「戻る」ボタンを押すと、「正しい日付を入力してください」のようなメッセージが出てしまった

これでは現象が理解できません.

特に TDateTimeConverter を継承したコンバータを
作成する必要があるのでしょうか?
そのコンバータはどのようなものでしょうか?

現象が再現する「最低の条件」を説明してください.

なお,popupCalendar の項目に @Required(target="..") を
指定した場合には,適切に動作しています.


> ■修正した箇所(使ってるバージョンはTeeda1.0.13sp6)
> 1、ConverterHelper:38行目
> if (component instanceof UIComponentBase) {
>   ValueBinding currentVb = ((UIComponentBase) component).getValueBinding("value");
>   ValueBinding newVb = new MockValueBinding(currentVb.getExpressionString());
>   ((UIComponentBase) component).setValueBinding("value", newVb);
> }
> 2、UIInput:253行目
> if (valueBinding == null || valueBinding instanceof MockValueBinding) {
> 3、DynamicValidatorInvockImpl:51行目
> if (id == null || vb == null || vb instanceof MockValueBinding) {

MockValueBinding は UnitTest のためのものです.
なぜこのクラスが出てくるのか理解できませんし,
このような修正を加えることもできません.


現状では何が問題か理解できないため,対応もできません.
繰り返しになりますが,Teeda HTML Example に加えて
確認ができる

「最低限」の「サンプル」

を提供していただけないでしょうか.


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