Struts <s:checkbox> is not converted correctly to List<Integer> when only one checkbox element is present and checkbox is not checked.
1) Mapping s:checkbox to a List<Integer>
2) there is only one checkbox in the list
3) the checkbox is not checked when the form is submitted.
The issue is caused by the checkbox tag using the "submit unchecked values" design pattern. As a result, the code base tries to convert the value of the single unchecked element to false (rather than not setting any value of the List<Integer>).
Fix: Allow the developer to choose if the "submit unchecked values" is to be implemented. Add a new parameter to the s:checkbox tag ("requiredValue"). Default of requiredValue=true for backwards compatibility. When set to false, no hidden input values will be displayed in the view. This flexibility might be needed in other scenarios as well.
Pull Request: https://github.com/apache/struts/pull/169