[ 
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

        

Reply via email to