FormComponent#inputChanged does not properly check enabled/disabled status of 
the component
-------------------------------------------------------------------------------------------

                 Key: WICKET-2935
                 URL: https://issues.apache.org/jira/browse/WICKET-2935
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.4.9
            Reporter: Carl-Eric Menzel


We noticed this when we had a panel that contains a number of CheckBox 
components. Some of these CheckBoxes were checked, the underlying model boolean 
was true. The panel itself was set to disabled (isEnabled returned false), 
which correctly caused the checkboxes to be rendered with the attribute 
disabled="disabled". On a form submit, however, the previously checked boxes 
were rendered unchecked. Only the internal state of the CheckBox and the 
rendered HTML changed - the model value was not touched.

After some debugging, I discovered the problem in FormComponent#inputChanged. 
That method only checks for isEnabled(), not isEnabledInHierarchy(). Since the 
CheckBox components themselves were enabled, they were accepting input. The 
browser, on the other hand, did not send anything, since the checkboxes were 
marked as disabled. This caused the CheckBox to receive null as its input, 
which it interprets as false/unchecked. The model was not affected since 
FormModelUpdateVisitor correctly checks isEnabledInHierarchy().

Solution: FormComponent#inputChanged needs to call isEnabledInHierarchy instead 
of isEnabled.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to