Pregunta

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.

¿Fue útil?

Solución

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top