先達の資料はたくさんあるので、私はそれをいつか消されてしまわないようにコピーして回ってるだけな感じですがメモ。
HTMLではCheckBoxをオンにした時しか値を送信してくれません。
CheckBoxイケてない。 - A Day In The Life
これだとチェックオンからオフに変えてもFormのセットメソッドは呼ばれず値が更新されません。
W3C の checkbox 仕様がそうなってるらしい。ほんとだ。
checkboxes
Forms in HTML documents
Checkboxes (and radio buttons) are on/off switches that may be toggled by the user. A switch is "on" when the control element's checked attribute is set. When a form is submitted, only "on" checkbox controls can become successful.
日本語に訳すとこんな感じ。
checkboxes (チェックボックス)
Forms in HTML documents (ja)
チェックボックスとラジオボタンは、ユーザが切り替え得るon/offスイッチである。当該コントロール要素がchecked属性が設定されると、スイッチが“on”になる。フォームが提出される際、“on”になっているチェックボックスコントロールのみが満足となる。
で、Struts の ActionForm を利用するときの解決方法としては:
これを回避するためにはFormのresetメソッドでCheckBoxの初期化処理を書いてやらないといけません。
CheckBoxイケてない。 - A Day In The Life
TECHSCORE に技術解説があった。
チェックボックスを使用する場合には上記のような不具合が生じるため、ActionFormにはプロパティを初期化するためのメソッド「reset」が用意されています。resetメソッドはHTTPリクエストからパラメータ値を読み取って設定する前に必ず呼ばれるものです。ActionFormで何らかの初期化をそのタイミングで行いたい場合には、resetメソッドをオーバーライドします。
2. ActionForm (5) | TECHSCORE(テックスコア)
捕鯨ー。