Igor Vaynberg created WICKET-6604:
-------------------------------------

             Summary: Ajax repaint is not correctly handled when component 
being repainted has an enclosure associated with it and is not a child of the 
enclosure
                 Key: WICKET-6604
                 URL: https://issues.apache.org/jira/browse/WICKET-6604
             Project: Wicket
          Issue Type: Bug
    Affects Versions: 8.1.0, 7.10.0
            Reporter: Igor Vaynberg
            Assignee: Igor Vaynberg
             Fix For: 7.11.0, 8.2.0


When a component is repainted with ajax we first check if that component is a 
controlling component of the enclosure and if it is we repaint the enclosure 
instead of the component. However, we make the assumption that the controlling 
component of the enclosure is always contained within the enclosure, which may 
not always be true with inline enclosures.

For example:
{code:java}
<label wicket:child="name" wicket:for="name">Name</label>
<input type="text" wicket:id="name"/>{code}
In this case the inline enclosure will only encompass the label. So if we 
repaint the textfield by adding it to the ajax request handler we will get a 
strange result where any header contributions associated with the name 
component will get rendered, but the markup for the name component will not - 
because we make the assumption that since it is controlling an enclosure it is 
also inside it so there is no point in repainting it directly.

 

One may argue that controlling components have to be inside the enclosure and 
we should throw an error if they are not, but I prefer this more flexible 
approach which allows the controller to be outside.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to