Johan Stuyts created WICKET-7144:
------------------------------------

             Summary: Improve Ajax updates of form component panels
                 Key: WICKET-7144
                 URL: https://issues.apache.org/jira/browse/WICKET-7144
             Project: Wicket
          Issue Type: Improvement
          Components: wicket-core
    Affects Versions: 10.4.0
            Reporter: Johan Stuyts


Using AjaxFormComponentUpdatingBehavior with FormComponentPanels is cumbersome 
and therefore error-prone: the client needs to create a sub class of the panel, 
override the factory methods for the nested form components, add a behavior to 
the nested components, and then call processInput() on the panel.

In case of a FormComponentPanel with more than 1 nested form component, it 
still does not work. The behavior added to a nested component will only submit 
the data for that nested component and not for the others. The panel uses the 
converted input of its nested components to determine its converted input 
(which is used to update the model). But the other components wll not have 
converted input, so the panel cannot determine its own converted input. The 
model of the panel will not contain the correct value when onUpdate(...) of the 
behavior is called.

Ajax updates of FormComponentPanels can be made more developer-friendly by:
 * Allowing panels (or sub classes) to indicate that they want to their 
children to process their input in an Ajax update.
 * Modifying AjaxFormComponentUpdatingBehavior to detect FormComponentPanels 
that have indicated that their children should process their input, and:
 ** Enable recursive serialization in the Ajax attributes, so all data of a 
FormComponentPanel is available in an Ajax update. 
 ** Telling these panels to tell their children to process their input in an 
Ajax update.

The needed changes are attached in a patch, and can be viewed here: 
[https://github.com/apache/wicket/compare/master...jstuyts:wicket:form-component-panel-ajax-update]

The changes are backward compatible and won't affect existing code, unless the 
signatures of the new methods of FormComponentPanel have been used.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to