A problem with a checkbox is that the browser will only include it in the
request when it is checked. If it is not checked, the HTML specification
suggests that it not be sent (i.e. omitted from the request). If the value of
the checkbox is being persisted, either in a session bean or in the model, a
checked box can never unchecked by a HTML form -- because the form can never
send a signal to uncheck the box. The application must somehow ascertain that
since the element was not sent that the corresponding value is unchecked.
The recommended approach for Struts applications is to use the reset method
in the ActionForm to set all properties represented by checkboxes to null or
false. The checked boxes submitted by the form will then set those properties
to true. The omitted properties will remain false. Another solution is to use
radio buttons instead, which always submit a value.
It is important to note that the HTML specification recommends this same
behavior whenever a control is not "successful". Any blank element
in a HTML form is not guaranteed to submitted. It is therefor very important
to set the default values for an ActionForm correctly, and to implement the
reset method when the ActionForm might kept in session scope.
|1. ||View Comment|
You can also include a hidden field of the same name preceding the checkbox. Assign this field the opposite value as the checkbox. If the checkbox is checked upon submission, the checkbox value is sent, otherwise the preceeding value is sent.
<INPUT TYPE=HIDDEN NAME=ENABLED VALUE=0>
<INPUT TYPE=CHECKBOX NAME=ENABLED VALUE=1> // We display enabled twice in order to pass the correct value even when not checked
View Tutorial By: Stray at 2010-01-05 08:07:47