Domanda

I have a wicket page like this:

public final class Services extends WebPage {
    public Services() {
        super();   
    }

    public Services(PageParameters params) {
        StringValue serviceType = params.get("name");
        if("report".equals(serviceType.toString())) {
            this.getResponse().write("HelloWorld");
        }
    }
}

and it's html is empty. when I call URL of this page I see this error

Index: 0, Size: 0
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.rangeCheck(ArrayList.java:604)
    at java.util.ArrayList.get(ArrayList.java:382)
    at java.util.Collections$UnmodifiableList.get(Collections.java:1211)
    at org.apache.wicket.markup.Markup.get(Markup.java:130)
    at org.apache.wicket.Component.internalRender(Component.java:2356)
    at org.apache.wicket.Component.render(Component.java:2307)
    at org.apache.wicket.Page.renderPage(Page.java:1010)
    at org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:121)
    at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:271)
    at org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:165)
    at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:861)
    at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
    at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
    at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
    at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
    at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
    at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
    at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
...

i don't know really what is wrong in my simple wicket page.

È stato utile?

Soluzione

Wicket ever expects some markup in the associated HTML template to the code. The line that is the originator of your Exception is in Component.class see

private final void internalRender()
{
...
    MarkupElement elem = markup.get(0);
...
}

That code gets a 'root' element of the associated markup. A code without any markup is a non-sence in Wicket.

TIP: If you just want to handle a request, mount a shareable resource or some of other resources other then a page.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top