Wicket ComponentNotFoundException:组件已从页面中删除

Wicket ComponentNotFoundException:组件已从页面中删除,wicket,Wicket,我在每一行都有一个带有ajax链接的列表。此链接用于管理自己的行删除过程。使用WebMarkupContainer包装整个列表。 按下链接,称为下一个逻辑 1) 项目已从数据库中删除。 2) 更新列表模型 3) add(wmc)-将WebMarkupContainer添加到ajax以进行更新 由于列表中有多个元素,所以每个移除操作都会在渲染阶段崩溃。所以在刷新页面后,我看到操作已经完成,但问题在那个之后发生了 IKickListener onKickListener = new IKickL

我在每一行都有一个带有ajax链接的列表。此链接用于管理自己的行删除过程。使用WebMarkupContainer包装整个列表。 按下链接,称为下一个逻辑 1) 项目已从数据库中删除。 2) 更新列表模型 3) add(wmc)-将WebMarkupContainer添加到ajax以进行更新

由于列表中有多个元素,所以每个移除操作都会在渲染阶段崩溃。所以在刷新页面后,我看到操作已经完成,但问题在那个之后发生了

  IKickListener onKickListener = new IKickListener() {
        @Override
        public void onKickListener(ListItem<Consultant> item, AjaxRequestTarget target) {

            Cons modelObject = item.getModelObject();
            mUserDAO.remove(modelObject.accountId, getId());

            updateListModel();
            target.add(mWmc);
            target.appendJavaScript("console.log("kicked")");
        }
    };

        mWmc = new WebMarkupContainer("wmc");
        mWmc.setOutputMarkupId(true);
        add(mWmc);
        ListView listView = new ConsListView("consList", new PropertyModel<List<? extends Cons>>(this, "consultants"), onKickListener);
        mWmc.add(listView);
我使用wicket 7.0.0-M5

更新
我发现,当列表中有超过1项时,ajax回调只为第一项附加。但单击操作删除了除一个项目之外的所有项目。还有一个ajax链接称为项目计数时间。

我发现了这个问题。我在每件物品上都有相同的id,不是wicket:id,而是一般id。所以监听器连接到了第一个,因为wicket ajax会监听它。然后它打了几次电话。 问题出在标记上

<span class="btn" wicket:id="actionKick" id="kick">Kick</span>
                                         ^^^^^^^^^---problem was here
Kick
^^^^^^^^^---问题就在这里

您必须多久单击一次才能显示此错误?每次当我有多个项目时
org.apache.wicket.core.request.handler.ComponentNotFoundException: Component 'consPanelPlace:cons:wmc:consList:2:actionKick' has been removed from page.
    at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:177)
    at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:865)
    at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
    at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265)
    at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222)
    at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293)
    at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
    at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
    at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
<span class="btn" wicket:id="actionKick" id="kick">Kick</span>
                                         ^^^^^^^^^---problem was here