ActionFormのreset()メソッド

旦那が調べることがあると言うのでBORDERS[BordersStores.com] *1に立ち読みしに行ってきました。立ち読みと言っても、カンフィーなソファや本屋さん内にカフェがあってテーブルもいすもいっぱいあるんで、そこらに座って読んでいいわけなんですけども。
でですね、Pro Jakarta Struts[Apress.com]がでてたんで読んでたら、reset()メソッドについてちょっと復習したんでメモします。
そもそもreset()メソッドはHTML formのcheckboxのためにインプリメントされたものだったんですね。どうゆうことかと言うと、checkboxって、チェックがついてるかついてないか(true or false)でしょ。チェックがついてないバリューは送信されませんよね。それをふまえて、例えばsessionで複数の画面をまたいで(wizard)チェックボックスを使う場合を想定してください。 A,B,Cのcheckboxがあったとします。 画面1が表示された時点ではA,Bにチェックされてたとします。そこでAのチェックを外して画面2へとフォームを送信します。ところが<input>タグはfalseのバリューを送信しないので、画面2のチェックボックスはアップデートされずA,B両方にチェックがついたままになります。
そこで、reset()メソッドでcheckboxをfalseにしてやるわけです。 そう、これがreset()メソッドの本当の使い方なんです。
でもね、よくreset()メソッドを使ってフォームのプリポピュレートの処理をするデベロッパーがいて、それに関するディベートもたくさん行われてきました。 でも、StrutsJavaDocではそういうことはするな、と。

This method is not the appropriate place to initialize form value for an "update" type page (this should be done in a setup Action). You mainly need to worry about setting checkbox values to false; most of the time you can leave this method unimplemented.

本に、まだそういう話はでてきてないが、reset()メソッドをプリポピュレートなどに使わない方が良い理由としてStrutsデベロッパーが挙げてるのが、もしかしたら将来reset()メソッドがdeprecatedになるかも…って書いてました。

*1:本屋さん