[Seasar-user:11685] Re: [Teeda] 入力フォームを空でサブミットしたらPageで空文字で受け取りたい

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 11月 16日 (金) 17:00:18 JST


小林 (koichik) です.

Date:    Fri, 16 Nov 2007 11:23:04 +0900
From:    木村 究道 <[E-MAIL ADDRESS DELETED]>
To:       [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11671] Re: [Teeda] 入力フォームを空でサブミットしたらPageで空文字で受け取りたい

> 調査していて、javax.faces.component.UIInputクラスの
> setValue()メソッドで、空文字をnullに置換えていること
> がわかりました。
> ここの、
(略)
> のように、空文字を置換えている3行をコメントにする対応
> を検討しています。
> Teedaのバージョンアップの度にこのクラスの変更の有無を
> チェックする覚悟はできていますが、それ以外で、何か問題
> となることはないでしょうか?

value が null かチェックしている場所は全部
影響がないかチェックする必要がありますね.
それ以外にも問題があるかもしれないというか
問題が無いとは言えません.
これ以上については,その辺の調査も含めて
そちらでお願いします.

> 申し訳ありません。「モデル側」の意味がわかれば理解で
> きると思っていたのですが、まだよくわかりません。
> Page クラスで空文字で受け取ると問題になることがある
> でしょうか?

Page クラスのプロパティは String に限らず様々な
型があり得るわけで,値が未入力の場合に一貫した
扱いをするには null が適当ということではないかと.

String を空文字列にすると,じゃあ Integer は
どうなんだという話にならないでしょうか.
そこで 0 にすると,未入力と 0 を入力した場合の
区別が付かないですよね.
Integer で未入力は null にすると,String との
一貫性のなさはどうなんだということになるし.

まぁ,この辺はポリシーの問題で,Teeda としては
一貫して null として扱うことになっていて,
多くのコードがそれを前提にしているということです.
これはもう変わらないと思います.

そういえば,MyFaces も最初は null だったのに
バージョンアップで空文字列に変わって (あるいは
その逆),それで S2JSF が動かなくなり,
MyFaces 捨てたい -> Teeda Core に移行という
流れがあったように記憶してます.


--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




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