[
https://issues.apache.org/jira/browse/WICKET-3827?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13053976#comment-13053976
]
Igor Vaynberg commented on WICKET-3827:
---------------------------------------
i do not think it is safe
suppose
class Page {
Component foo;
public Page() {
add(foo=new Label("foo").setOutputMarkupId(true);
add(new ajaxlink("link") { onclick(target) { Label bar=new
Label(foo.getid()).setOutputMarkupId(true); foo.replaceWith(bar); foo=bar;
target.add(foo); }}
this simple case will fail to work
first foo is created with an autogenerated unique id ID0, it is rendered <div
id="ID0">
next we create bar which gets a newly generated id ID6. we replace foo with bar
and add bar to the ajax request target. this will fail because wicket will be
looking for a node with ID6 and will not find it. this is why the code is there
- to keep this from happening.
> Component loses state after replace another one
> -----------------------------------------------
>
> Key: WICKET-3827
> URL: https://issues.apache.org/jira/browse/WICKET-3827
> Project: Wicket
> Issue Type: Bug
> Components: wicket-core
> Affects Versions: 1.5-RC4
> Reporter: Pedro Santos
> Attachments: WICKET-3827-markup-id.zip
>
>
> After WICKET-3197 we set the replacement component 'output markup id' flag to
> be the same as the replaced component [1]. IMO we can't change the component
> state set by users in benefit of the component being replaced as it can lead
> to unexpected behaviors like AJAX links or buttons not working. I'm sending a
> quickstart to exemplify.
> 1- Component#setMarkupId(Component comp)
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira