You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Ronald Tetsuo Miura (JIRA)" <ji...@apache.org> on 2011/04/01 13:51:05 UTC

[jira] [Created] (WICKET-3584) Ajax re-render fails if a instantiation listener calls setOutputMarkupId(true) on every component.

Ajax re-render fails if a instantiation listener calls setOutputMarkupId(true) on every component.
--------------------------------------------------------------------------------------------------

                 Key: WICKET-3584
                 URL: https://issues.apache.org/jira/browse/WICKET-3584
             Project: Wicket
          Issue Type: Bug
          Components: wicket-core
    Affects Versions: 1.4.17
         Environment: Windows Vista, JDK 1.6_22, Eclipse Helios, Maven 3.0.x
            Reporter: Ronald Tetsuo Miura


If you setup a IComponentInstantiationListener that calls setOutputMarkupId(true) to every component, the tags with the enclosure attribute don't get re-rendered on ajax requests, because the generated IDs from the HTML placeholder and the Ajax response don't match.

Code:

public class App extends WebApplication {
   @Override
   protected void init() {
       addComponentInstantiationListener(new IComponentInstantiationListener() {
           public void onInstantiation(Component component) {
               component.setOutputMarkupId(true);
           }
       });
   }
   @Override
   public Class<? extends Page> getHomePage() {
       return HomePage.class;
   }
}

public class HomePage extends WebPage {
   public HomePage() {
       final Label label = new Label("label", "VISIBLE!");
       add(label.setVisible(false).setOutputMarkupId(true));
       add(new AjaxLink<Void>("link") {
           @Override
           public void onClick(AjaxRequestTarget target) {
               label.setVisible(!label.isVisible());
               target.addComponent(label);
           }
       });
   }
}

<html xmlns:wicket="http://wicket.apache.org">
<body>
<a wicket:id="link">Clique!</a>
<div wicket:enclosure="label">
 <hr/>
   <h1 wicket:id="label"></h1>
 <hr/>
</div>
</body>
</html>

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Commented] (WICKET-3584) Ajax re-render fails if a instantiation listener calls setOutputMarkupId(true) on every component.

Posted by "Juergen Donnerstag (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WICKET-3584?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13023532#comment-13023532 ] 

Juergen Donnerstag commented on WICKET-3584:
--------------------------------------------

tested against 1.5 to check if error occurs as well => 1.5 seems to be ok.

> Ajax re-render fails if a instantiation listener calls setOutputMarkupId(true) on every component.
> --------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-3584
>                 URL: https://issues.apache.org/jira/browse/WICKET-3584
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-core
>    Affects Versions: 1.4.17
>         Environment: Windows Vista, JDK 1.6_22, Eclipse Helios, Maven 3.0.x
>            Reporter: Ronald Tetsuo Miura
>
> If you setup a IComponentInstantiationListener that calls setOutputMarkupId(true) to every component, the tags with the enclosure attribute don't get re-rendered on ajax requests, because the generated IDs from the HTML placeholder and the Ajax response don't match.
> Code:
> public class App extends WebApplication {
>    @Override
>    protected void init() {
>        addComponentInstantiationListener(new IComponentInstantiationListener() {
>            public void onInstantiation(Component component) {
>                component.setOutputMarkupId(true);
>            }
>        });
>    }
>    @Override
>    public Class<? extends Page> getHomePage() {
>        return HomePage.class;
>    }
> }
> public class HomePage extends WebPage {
>    public HomePage() {
>        final Label label = new Label("label", "VISIBLE!");
>        add(label.setVisible(false).setOutputMarkupId(true));
>        add(new AjaxLink<Void>("link") {
>            @Override
>            public void onClick(AjaxRequestTarget target) {
>                label.setVisible(!label.isVisible());
>                target.addComponent(label);
>            }
>        });
>    }
> }
> <html xmlns:wicket="http://wicket.apache.org">
> <body>
> <a wicket:id="link">Clique!</a>
> <div wicket:enclosure="label">
>  <hr/>
>    <h1 wicket:id="label"></h1>
>  <hr/>
> </div>
> </body>
> </html>

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Resolved] (WICKET-3584) Ajax re-render fails if a instantiation listener calls setOutputMarkupId(true) on every component.

Posted by "Igor Vaynberg (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-3584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Igor Vaynberg resolved WICKET-3584.
-----------------------------------

    Resolution: Invalid
      Assignee: Igor Vaynberg

since the labe is initially rendered invisible one must call setOuputMarkupPlaceHolderTag(true) instead of just setOutputMarkupId(true)

> Ajax re-render fails if a instantiation listener calls setOutputMarkupId(true) on every component.
> --------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-3584
>                 URL: https://issues.apache.org/jira/browse/WICKET-3584
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-core
>    Affects Versions: 1.4.17
>         Environment: Windows Vista, JDK 1.6_22, Eclipse Helios, Maven 3.0.x
>            Reporter: Ronald Tetsuo Miura
>            Assignee: Igor Vaynberg
>
> If you setup a IComponentInstantiationListener that calls setOutputMarkupId(true) to every component, the tags with the enclosure attribute don't get re-rendered on ajax requests, because the generated IDs from the HTML placeholder and the Ajax response don't match.
> Code:
> public class App extends WebApplication {
>    @Override
>    protected void init() {
>        addComponentInstantiationListener(new IComponentInstantiationListener() {
>            public void onInstantiation(Component component) {
>                component.setOutputMarkupId(true);
>            }
>        });
>    }
>    @Override
>    public Class<? extends Page> getHomePage() {
>        return HomePage.class;
>    }
> }
> public class HomePage extends WebPage {
>    public HomePage() {
>        final Label label = new Label("label", "VISIBLE!");
>        add(label.setVisible(false).setOutputMarkupId(true));
>        add(new AjaxLink<Void>("link") {
>            @Override
>            public void onClick(AjaxRequestTarget target) {
>                label.setVisible(!label.isVisible());
>                target.addComponent(label);
>            }
>        });
>    }
> }
> <html xmlns:wicket="http://wicket.apache.org">
> <body>
> <a wicket:id="link">Clique!</a>
> <div wicket:enclosure="label">
>  <hr/>
>    <h1 wicket:id="label"></h1>
>  <hr/>
> </div>
> </body>
> </html>

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira