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.

有帮助吗?

解决方案

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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top