[Seasar-user:19641] Re: TimestampConverterについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2010年 4月 22日 (木) 21:00:56 JST


小林 (koichik) です.

Date:    Wed, 21 Apr 2010 15:14:52 +0900
From:    "t.toda" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:19639] TimestampConverterについて

> 実際doClearを実行するとnoだけnullになり、dateはnullにならず・・・
> 
> TimestampConverterを外すとしっかり両方ともnullになります。
> 試しにtargetを指定せず、バリデートも引っかからないよな値を試しに入力しdoClearを実行すると両方ともnullになります。
> 
> TimestampConverterを掛けたフィールド変数は何か特別な動きをしているのでしょうか?(target以外のメソッドを実行した場合なども)

JSF では UIComponent (のサブクラスである UIInput) と
Page クラス (JSF 用語では Managed Bean) の両方に
状態を持っていて,Converter はその間で値を相互に
変換します.

Converter に target を指定すると,指定された
メソッド以外の場合は UIInput -> Page だけでなく,
Page -> UIInput への変換も行われなくなります.
そのため,doClear() メソッドの中で Page クラスが
持つ date プロパティを null にしても,それが
UIInput に反映されることはなく,元の値がそのまま
残ってしまいます.

対策としては,HTML 側で doClear() ボタンを
押された際に JavaScript で項目をクリアしてから
form をサブミットするのがいいのではないでしょうか.


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