We're in the middle of migrating a large enterprise content management system (>1000 UI classes) from 6.x to 7.x.

We've finally got it compiling with Wicket 7.x but we're having an issue with an EnclosureContainer that worked fine in Wicket 6.x.

org.apache.wicket.WicketRuntimeException: Could not find child with id: menuTitle in the wicket:enclosure     at org.apache.wicket.markup.html.internal.Enclosure.checkChildComponent(Enclosure.java:295) ~[wicket-core-7.18.0.jar:7.18.0]     at org.apache.wicket.markup.html.internal.Enclosure.getChildComponent(Enclosure.java:273) ~[wicket-core-7.18.0.jar:7.18.0]     at org.apache.wicket.markup.html.internal.Enclosure.getChild(Enclosure.java:136) ~[wicket-core-7.18.0.jar:7.18.0]     at org.apache.wicket.markup.html.internal.Enclosure.onConfigure(Enclosure.java:178) ~[wicket-core-7.18.0.jar:7.18.0]     at org.apache.wicket.Component.configure(Component.java:1056) ~[wicket-core-7.18.0.jar:7.18.0]     at org.apache.wicket.Component.internalBeforeRender(Component.java:941) ~[wicket-core-7.18.0.jar:7.18.0]     at org.apache.wicket.Component.beforeRender(Component.java:1018) ~[wicket-core-7.18.0.jar:7.18.0]     at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1826) ~[wicket-core-7.18.0.jar:7.18.0]     at org.apache.wicket.Component.onBeforeRender(Component.java:3921) ~[wicket-core-7.18.0.jar:7.18.0]     at com.sas.av.ui.wicket.templates.original.OrganizationPanel.onBeforeRender(OrganizationPanel.java:576) ~[classes/:?]
   ...


I created a Wicket quickstart in 7.18.0 and was able to reproduce the issue with the following  code:


Markup:

<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org";>
    <head>
        <meta charset="utf-8" />
        <title>Apache Wicket Quickstart</title>
    </head>
    <body>
        <h1>Apache Wicket</h1>
        <wicket:enclosure wicket:id="menuTitleEc">
            <h3><span wicket:id="menuTitle">Title</span></h3>
        </wicket:enclosure>
    </body>
</html>

Java:

package com.sas;

import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.*;

public class HomePage extends WebPage {
    private static final long serialVersionUID = 1L;

    public HomePage(final PageParameters parameters) {
        super(parameters);

        Label menuTitleLabel = new Label("menuTitle", "Fred");
        EnclosureContainer ec = new EnclosureContainer("menuTitleEc", menuTitleLabel);
        ec.add(menuTitleLabel);
        menuTitleLabel.setVisible(true);
        add(ec);
    }
}


If I don't use an explicit EnclosureContainer and remove the wicket:id= from the wicket:enclosure element it works but I need to explicitly declare the enclosure in the component hierarchy.

Regards,
Chris



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to